Merge branch 'gles2-2'
authorKristian Høgsberg <krh@bitplanet.net>
Sun, 2 May 2010 14:17:07 +0000 (10:17 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Sun, 2 May 2010 14:17:07 +0000 (10:17 -0400)
Conflicts:
src/mesa/drivers/dri/common/dri_util.h

396 files changed:
SConstruct
configs/autoconf.in
configs/darwin
configs/linux-dri
configs/linux-egl
configs/linux-opengl-es
configs/linux-osmesa
configs/linux-osmesa16
configs/linux-osmesa32
configure.ac
docs/GL3.txt
docs/lists.html
docs/relnotes-7.8.2.html
include/GL/glext.h
include/GL/glxext.h
include/GL/internal/dri_interface.h
progs/demos/rain.cxx
progs/demos/textures.c
progs/demos/vao_demo.c
progs/egl/eglut/Makefile
progs/egl/opengl/Makefile
progs/egl/opengles1/Makefile
progs/egl/openvg/Makefile
progs/osdemos/Makefile
progs/osdemos/ostest1.c
progs/tests/arraytexture.c
progs/tests/blendminmax.c
progs/tests/blendsquare.c
progs/tests/bug_3101.c
progs/tests/bug_3195.c
progs/tests/crossbar.c
progs/tests/interleave.c
progs/tests/invert.c
progs/tests/prog_parameter.c
progs/tests/stencil_twoside.c
progs/tests/stencil_wrap.c
progs/tests/vao-01.c
progs/tests/vao-02.c
progs/tests/zreaddraw.c
src/egl/drivers/dri2/egl_dri2.c
src/gallium/Makefile.template
src/gallium/auxiliary/Makefile
src/gallium/auxiliary/SConscript
src/gallium/auxiliary/cso_cache/cso_context.c
src/gallium/auxiliary/draw/draw_llvm.c
src/gallium/auxiliary/draw/draw_llvm.h
src/gallium/auxiliary/draw/draw_pipe_vbuf.c
src/gallium/auxiliary/draw/draw_pipe_wide_line.c
src/gallium/auxiliary/draw/draw_private.h
src/gallium/auxiliary/draw/draw_pt.c
src/gallium/auxiliary/draw/draw_pt_emit.c
src/gallium/auxiliary/draw/draw_pt_fetch.c
src/gallium/auxiliary/draw/draw_pt_fetch_emit.c
src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c
src/gallium/auxiliary/draw/draw_vs.c
src/gallium/auxiliary/draw/draw_vs.h
src/gallium/auxiliary/draw/draw_vs_aos.c
src/gallium/auxiliary/draw/draw_vs_exec.c
src/gallium/auxiliary/draw/draw_vs_ppc.c
src/gallium/auxiliary/draw/draw_vs_sse.c
src/gallium/auxiliary/draw/draw_vs_varient.c
src/gallium/auxiliary/gallivm/lp_bld_arit.c
src/gallium/auxiliary/gallivm/lp_bld_flow.c
src/gallium/auxiliary/gallivm/lp_bld_flow.h
src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
src/gallium/auxiliary/gallivm/lp_bld_init.c
src/gallium/auxiliary/gallivm/lp_bld_logic.c
src/gallium/auxiliary/gallivm/lp_bld_logic.h
src/gallium/auxiliary/gallivm/lp_bld_sample.c
src/gallium/auxiliary/gallivm/lp_bld_sample.h
src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
src/gallium/auxiliary/os/os_thread.h
src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt
src/gallium/auxiliary/tgsi/tgsi_dump.c
src/gallium/auxiliary/tgsi/tgsi_exec.c
src/gallium/auxiliary/tgsi/tgsi_info.c
src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
src/gallium/auxiliary/tgsi/tgsi_sanity.c
src/gallium/auxiliary/tgsi/tgsi_sse2.c
src/gallium/auxiliary/translate/translate.h
src/gallium/auxiliary/translate/translate_generic.c
src/gallium/auxiliary/translate/translate_sse.c
src/gallium/auxiliary/util/u_caps.c [new file with mode: 0644]
src/gallium/auxiliary/util/u_caps.h [new file with mode: 0644]
src/gallium/auxiliary/util/u_debug.c
src/gallium/auxiliary/util/u_debug.h
src/gallium/auxiliary/util/u_dump_state.c
src/gallium/auxiliary/util/u_format.h
src/gallium/auxiliary/util/u_format_s3tc.c
src/gallium/auxiliary/util/u_surfaces.c
src/gallium/auxiliary/util/u_tile.c
src/gallium/docs/source/conf.py
src/gallium/docs/source/screen.rst
src/gallium/docs/source/tgsi.rst
src/gallium/drivers/cell/spu/spu_exec.c
src/gallium/drivers/failover/fo_context.c
src/gallium/drivers/failover/fo_state.c
src/gallium/drivers/i965/brw_curbe.c
src/gallium/drivers/i965/brw_state_batch.c
src/gallium/drivers/i965/intel_decode.c
src/gallium/drivers/identity/id_context.c
src/gallium/drivers/identity/id_drm.c
src/gallium/drivers/llvmpipe/Makefile
src/gallium/drivers/llvmpipe/SConscript
src/gallium/drivers/llvmpipe/lp_context.c
src/gallium/drivers/llvmpipe/lp_context.h
src/gallium/drivers/llvmpipe/lp_draw_arrays.c
src/gallium/drivers/llvmpipe/lp_flush.c
src/gallium/drivers/llvmpipe/lp_flush.h
src/gallium/drivers/llvmpipe/lp_jit.c
src/gallium/drivers/llvmpipe/lp_limits.h [new file with mode: 0644]
src/gallium/drivers/llvmpipe/lp_rast.c
src/gallium/drivers/llvmpipe/lp_rast.h
src/gallium/drivers/llvmpipe/lp_rast_priv.h
src/gallium/drivers/llvmpipe/lp_scene.c
src/gallium/drivers/llvmpipe/lp_scene.h
src/gallium/drivers/llvmpipe/lp_screen.c
src/gallium/drivers/llvmpipe/lp_screen.h
src/gallium/drivers/llvmpipe/lp_setup.c
src/gallium/drivers/llvmpipe/lp_setup_context.h
src/gallium/drivers/llvmpipe/lp_setup_vbuf.c
src/gallium/drivers/llvmpipe/lp_state.h
src/gallium/drivers/llvmpipe/lp_state_blend.c
src/gallium/drivers/llvmpipe/lp_state_clip.c
src/gallium/drivers/llvmpipe/lp_state_fs.c
src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
src/gallium/drivers/llvmpipe/lp_state_sampler.c
src/gallium/drivers/llvmpipe/lp_state_surface.c
src/gallium/drivers/llvmpipe/lp_state_vertex.c
src/gallium/drivers/llvmpipe/lp_state_vs.c
src/gallium/drivers/llvmpipe/lp_surface.c
src/gallium/drivers/llvmpipe/lp_surface.h
src/gallium/drivers/llvmpipe/lp_test_blend.c
src/gallium/drivers/llvmpipe/lp_tex_sample.c [new file with mode: 0644]
src/gallium/drivers/llvmpipe/lp_tex_sample_llvm.c [deleted file]
src/gallium/drivers/llvmpipe/lp_texture.c
src/gallium/drivers/llvmpipe/lp_texture.h
src/gallium/drivers/llvmpipe/lp_tile_image.c
src/gallium/drivers/llvmpipe/lp_tile_image.h
src/gallium/drivers/llvmpipe/lp_tile_size.h [deleted file]
src/gallium/drivers/llvmpipe/lp_tile_soa.h
src/gallium/drivers/llvmpipe/lp_tile_soa.py
src/gallium/drivers/llvmpipe/sp2lp.sh [deleted file]
src/gallium/drivers/nouveau/SConscript [new file with mode: 0644]
src/gallium/drivers/nv50/SConscript [new file with mode: 0644]
src/gallium/drivers/nv50/nv50_program.c
src/gallium/drivers/nv50/nv50_screen.c
src/gallium/drivers/nv50/nv50_screen.h
src/gallium/drivers/nv50/nv50_surface.c
src/gallium/drivers/nvfx/SConscript [new file with mode: 0644]
src/gallium/drivers/nvfx/nvfx_vbo.c
src/gallium/drivers/r300/Makefile
src/gallium/drivers/r300/SConscript
src/gallium/drivers/r300/r300_context.c
src/gallium/drivers/r300/r300_context.h
src/gallium/drivers/r300/r300_cs.h
src/gallium/drivers/r300/r300_debug.c
src/gallium/drivers/r300/r300_emit.c
src/gallium/drivers/r300/r300_emit.h
src/gallium/drivers/r300/r300_fs.c
src/gallium/drivers/r300/r300_hyperz.c [new file with mode: 0644]
src/gallium/drivers/r300/r300_hyperz.h [new file with mode: 0644]
src/gallium/drivers/r300/r300_reg.h
src/gallium/drivers/r300/r300_render.c
src/gallium/drivers/r300/r300_screen.c
src/gallium/drivers/r300/r300_screen.h
src/gallium/drivers/r300/r300_state.c
src/gallium/drivers/r300/r300_state_derived.c
src/gallium/drivers/r300/r300_state_inlines.h
src/gallium/drivers/r300/r300_state_invariant.c
src/gallium/drivers/r300/r300_texture.c
src/gallium/drivers/r300/r300_texture.h
src/gallium/drivers/r300/r300_tgsi_to_rc.c
src/gallium/drivers/r300/r300_vs.c
src/gallium/drivers/r300/r300_vs.h
src/gallium/drivers/r300/r300_winsys.h
src/gallium/drivers/softpipe/sp_clear.c
src/gallium/drivers/softpipe/sp_flush.c
src/gallium/drivers/softpipe/sp_flush.h
src/gallium/drivers/softpipe/sp_screen.c
src/gallium/drivers/softpipe/sp_tex_tile_cache.c
src/gallium/drivers/softpipe/sp_texture.c
src/gallium/drivers/softpipe/sp_tile_cache.c
src/gallium/drivers/softpipe/sp_tile_cache.h
src/gallium/drivers/svga/svga_draw_arrays.c
src/gallium/drivers/svga/svga_resource.c
src/gallium/drivers/svga/svga_screen.c
src/gallium/drivers/svga/svga_state_need_swtnl.c
src/gallium/drivers/svga/svga_state_vs.c
src/gallium/drivers/svga/svga_tgsi_insn.c
src/gallium/drivers/trace/tr_context.c
src/gallium/drivers/trace/tr_drm.c
src/gallium/include/pipe/p_defines.h
src/gallium/include/pipe/p_screen.h
src/gallium/include/pipe/p_shader_tokens.h
src/gallium/include/state_tracker/st_api.h
src/gallium/state_trackers/dri/common/dri1_helper.c
src/gallium/state_trackers/dri/common/dri_context.c
src/gallium/state_trackers/dri/common/dri_context.h
src/gallium/state_trackers/dri/common/dri_drawable.c
src/gallium/state_trackers/dri/common/dri_drawable.h
src/gallium/state_trackers/dri/common/dri_screen.c
src/gallium/state_trackers/dri/common/dri_screen.h
src/gallium/state_trackers/dri/common/dri_st_api.c [deleted file]
src/gallium/state_trackers/dri/common/dri_st_api.h [deleted file]
src/gallium/state_trackers/dri/drm/Makefile
src/gallium/state_trackers/dri/drm/SConscript
src/gallium/state_trackers/dri/drm/dri1.c
src/gallium/state_trackers/dri/drm/dri1.h
src/gallium/state_trackers/dri/drm/dri2.c
src/gallium/state_trackers/dri/drm/dri2.h
src/gallium/state_trackers/dri/drm/dri_st_api.c [deleted symlink]
src/gallium/state_trackers/dri/sw/Makefile
src/gallium/state_trackers/dri/sw/SConscript
src/gallium/state_trackers/dri/sw/dri_st_api.c [deleted symlink]
src/gallium/state_trackers/dri/sw/drisw.c
src/gallium/state_trackers/dri/sw/drisw.h
src/gallium/state_trackers/egl/common/egl_g3d_st.c
src/gallium/state_trackers/es/st_es1.c
src/gallium/state_trackers/es/st_es2.c
src/gallium/state_trackers/glx/xlib/xm_st.c
src/gallium/state_trackers/vega/vg_manager.c
src/gallium/state_trackers/wgl/stw_st.c
src/gallium/targets/Makefile.dri
src/gallium/targets/dri-swrast/Makefile
src/gallium/targets/dri-swrast/swrast_drm_api.c
src/gallium/targets/libgl-xlib/xlib.c
src/gallium/winsys/i915/sw/i915_sw_buffer.c
src/gallium/winsys/i965/drm/SConscript
src/gallium/winsys/radeon/drm/SConscript
src/gallium/winsys/radeon/drm/radeon_drm.c
src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
src/gallium/winsys/radeon/drm/radeon_r300.c
src/gallium/winsys/radeon/drm/radeon_winsys.h
src/gallium/winsys/svga/drm/vmw_context.c
src/gallium/winsys/sw/xlib/xlib_sw_winsys.c
src/glx/Makefile
src/glx/XF86dri.c
src/glx/apple/.gitignore [new file with mode: 0644]
src/glx/apple/GL_aliases [new file with mode: 0644]
src/glx/apple/GL_extensions [new file with mode: 0644]
src/glx/apple/GL_noop [new file with mode: 0644]
src/glx/apple/GL_promoted [new file with mode: 0644]
src/glx/apple/Makefile [new file with mode: 0644]
src/glx/apple/OVERALL_DESIGN [new file with mode: 0644]
src/glx/apple/README_UPDATING [new file with mode: 0644]
src/glx/apple/RELEASE_NOTES [new file with mode: 0644]
src/glx/apple/TODO [new file with mode: 0644]
src/glx/apple/apple_cgl.c [new file with mode: 0644]
src/glx/apple/apple_cgl.h [new file with mode: 0644]
src/glx/apple/apple_exports.list [new file with mode: 0644]
src/glx/apple/apple_glx.c [new file with mode: 0644]
src/glx/apple/apple_glx.h [new file with mode: 0644]
src/glx/apple/apple_glx_context.c [new file with mode: 0644]
src/glx/apple/apple_glx_context.h [new file with mode: 0644]
src/glx/apple/apple_glx_drawable.c [new file with mode: 0644]
src/glx/apple/apple_glx_drawable.h [new file with mode: 0644]
src/glx/apple/apple_glx_pbuffer.c [new file with mode: 0644]
src/glx/apple/apple_glx_pixmap.c [new file with mode: 0644]
src/glx/apple/apple_glx_surface.c [new file with mode: 0644]
src/glx/apple/apple_visual.c [new file with mode: 0644]
src/glx/apple/apple_visual.h [new file with mode: 0644]
src/glx/apple/apple_xgl_api_additional.c [new file with mode: 0644]
src/glx/apple/apple_xgl_api_read.c [new file with mode: 0644]
src/glx/apple/apple_xgl_api_stereo.c [new file with mode: 0644]
src/glx/apple/apple_xgl_api_viewport.c [new file with mode: 0644]
src/glx/apple/appledri.c [new file with mode: 0644]
src/glx/apple/appledri.h [new file with mode: 0644]
src/glx/apple/appledristr.h [new file with mode: 0644]
src/glx/apple/gen_api_header.tcl [new file with mode: 0644]
src/glx/apple/gen_api_library.tcl [new file with mode: 0644]
src/glx/apple/gen_code.tcl [new file with mode: 0644]
src/glx/apple/gen_defs.tcl [new file with mode: 0644]
src/glx/apple/gen_exports.tcl [new file with mode: 0644]
src/glx/apple/gen_funcs.tcl [new file with mode: 0644]
src/glx/apple/gen_types.tcl [new file with mode: 0644]
src/glx/apple/glx_empty.c [new file with mode: 0644]
src/glx/apple/glx_error.c [new file with mode: 0644]
src/glx/apple/glx_error.h [new file with mode: 0644]
src/glx/apple/glxreply.c [new file with mode: 0644]
src/glx/apple/specs/enum.spec [new file with mode: 0644]
src/glx/apple/specs/enumext.spec [new file with mode: 0644]
src/glx/apple/specs/gl.spec [new file with mode: 0644]
src/glx/apple/specs/gl.tm [new file with mode: 0644]
src/glx/apple/specs/glx.spec [new file with mode: 0644]
src/glx/apple/specs/glxenum.spec [new file with mode: 0644]
src/glx/apple/specs/glxenumext.spec [new file with mode: 0644]
src/glx/apple/specs/glxext.spec [new file with mode: 0644]
src/glx/apple/specs/update.sh [new file with mode: 0755]
src/glx/clientattrib.c
src/glx/dri2_glx.c
src/glx/dri_common.c
src/glx/dri_glx.c
src/glx/drisw_glx.c
src/glx/glcontextmodes.c
src/glx/glx_pbuffer.c
src/glx/glxclient.h
src/glx/glxcmds.c
src/glx/glxcurrent.c
src/glx/glxext.c
src/glx/glxextensions.c
src/glx/indirect.c
src/glx/indirect_size.c
src/glx/singlepix.c
src/mesa/drivers/common/meta.c
src/mesa/drivers/dri/common/dri_util.c
src/mesa/drivers/dri/common/dri_util.h
src/mesa/drivers/dri/i915/i915_fragprog.c
src/mesa/drivers/dri/i915/i915_program.c
src/mesa/drivers/dri/i915/i915_tex_layout.c
src/mesa/drivers/dri/i965/brw_program.c
src/mesa/drivers/dri/i965/brw_sf_state.c
src/mesa/drivers/dri/i965/brw_tex_layout.c
src/mesa/drivers/dri/i965/brw_vs_emit.c
src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
src/mesa/drivers/dri/i965/brw_wm_surface_state.c
src/mesa/drivers/dri/intel/intel_screen.c
src/mesa/drivers/dri/intel/intel_tex_layout.c
src/mesa/drivers/dri/intel/intel_tex_layout.h
src/mesa/drivers/dri/nouveau/nouveau_screen.c
src/mesa/drivers/dri/r300/r300_state.c
src/mesa/drivers/dri/r600/r600_blit.c
src/mesa/drivers/dri/r600/r600_context.c
src/mesa/drivers/dri/r600/r600_tex.c
src/mesa/drivers/dri/r600/r600_tex.h
src/mesa/drivers/dri/r600/r700_assembler.c
src/mesa/drivers/dri/r600/r700_chip.c
src/mesa/drivers/dri/r600/r700_fragprog.c
src/mesa/drivers/dri/r600/r700_state.c
src/mesa/drivers/dri/r600/r700_vertprog.c
src/mesa/drivers/dri/radeon/radeon_bo_legacy.c
src/mesa/drivers/dri/radeon/radeon_queryobj.c
src/mesa/drivers/dri/radeon/radeon_screen.c
src/mesa/drivers/dri/radeon/radeon_screen.h
src/mesa/glapi/gen/ARB_seamless_cube_map.xml
src/mesa/glapi/glapi_getproc.c
src/mesa/glapi/glapi_nop.c
src/mesa/main/debug.c
src/mesa/main/dlist.c
src/mesa/main/enums.c
src/mesa/main/formats.c
src/mesa/main/formats.h
src/mesa/main/framebuffer.c
src/mesa/main/framebuffer.h
src/mesa/main/image.c
src/mesa/main/image.h
src/mesa/main/mipmap.c
src/mesa/main/shaders.c
src/mesa/main/texfetch.c
src/mesa/main/texfetch_tmp.h
src/mesa/main/texformat.c
src/mesa/main/teximage.c
src/mesa/main/texobj.c
src/mesa/main/texstore.c
src/mesa/shader/program_parse.tab.c
src/mesa/shader/program_parse.y
src/mesa/shader/slang/slang_codegen.c
src/mesa/shader/slang/slang_emit.c
src/mesa/shader/slang/slang_ir.c
src/mesa/shader/slang/slang_label.c
src/mesa/shader/slang/slang_link.c
src/mesa/shader/slang/slang_print.c
src/mesa/shader/slang/slang_utility.c
src/mesa/state_tracker/st_atom_framebuffer.c
src/mesa/state_tracker/st_atom_pixeltransfer.c
src/mesa/state_tracker/st_atom_sampler.c
src/mesa/state_tracker/st_atom_texture.c
src/mesa/state_tracker/st_cb_accum.c
src/mesa/state_tracker/st_cb_bitmap.c
src/mesa/state_tracker/st_cb_blit.c
src/mesa/state_tracker/st_cb_clear.c
src/mesa/state_tracker/st_cb_condrender.c
src/mesa/state_tracker/st_cb_drawpixels.c
src/mesa/state_tracker/st_cb_eglimage.c
src/mesa/state_tracker/st_cb_fbo.c
src/mesa/state_tracker/st_cb_feedback.c
src/mesa/state_tracker/st_cb_flush.c
src/mesa/state_tracker/st_cb_queryobj.c
src/mesa/state_tracker/st_cb_rasterpos.c
src/mesa/state_tracker/st_cb_readpixels.c
src/mesa/state_tracker/st_cb_texture.c
src/mesa/state_tracker/st_context.h
src/mesa/state_tracker/st_debug.c
src/mesa/state_tracker/st_draw.c
src/mesa/state_tracker/st_draw_feedback.c
src/mesa/state_tracker/st_format.c
src/mesa/state_tracker/st_gen_mipmap.c
src/mesa/state_tracker/st_gl_api.h [new file with mode: 0644]
src/mesa/state_tracker/st_manager.c
src/mesa/state_tracker/st_program.c
src/mesa/state_tracker/st_texture.c
src/mesa/state_tracker/st_texture.h
src/mesa/x86-64/xform4.S

index fdcd72b30d140944b8c7ef91ff1cb68e4aa16dfa..3a4ff9a3fac94a8314d247cffb7316b178e3772c 100644 (file)
@@ -50,7 +50,7 @@ common.AddOptions(opts)
 opts.Add(ListVariable('statetrackers', 'state trackers to build', default_statetrackers,
                      ['mesa', 'python', 'xorg']))
 opts.Add(ListVariable('drivers', 'pipe drivers to build', default_drivers,
-                     ['softpipe', 'failover', 'svga', 'i915', 'i965', 'trace', 'r300', 'identity', 'llvmpipe']))
+                     ['softpipe', 'failover', 'svga', 'i915', 'i965', 'trace', 'r300', 'identity', 'llvmpipe', 'nouveau', 'nv50', 'nvfx']))
 opts.Add(ListVariable('winsys', 'winsys drivers to build', default_winsys,
                      ['xlib', 'vmware', 'i915', 'i965', 'gdi', 'radeon', 'graw-xlib']))
 
@@ -113,8 +113,10 @@ if env['llvm'] and 'llvmpipe' not in env['drivers']:
     env['drivers'].append('llvmpipe')
 
 # Includes
-env.Append(CPPPATH = [
+env.Prepend(CPPPATH = [
        '#/include',
+])
+env.Append(CPPPATH = [
        '#/src/gallium/include',
        '#/src/gallium/auxiliary',
        '#/src/gallium/drivers',
index 2235abe73f89972465a0d9fe188d710569ea31c2..eeb99780bec06bfffe60106f4f2024d5ccd8bf53 100644 (file)
@@ -28,6 +28,10 @@ INTEL_LIBS = @INTEL_LIBS@
 INTEL_CFLAGS = @INTEL_CFLAGS@
 X11_LIBS = @X11_LIBS@
 X11_CFLAGS = @X11_CFLAGS@
+LLVM_CFLAGS = @LLVM_CFLAGS@
+LLVM_LDFLAGS = @LLVM_LDFLAGS@
+LLVM_LIBS = @LLVM_LIBS@
+
 
 # Assembler
 MESA_ASM_SOURCES = @MESA_ASM_SOURCES@
@@ -169,3 +173,11 @@ GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@
 
 EGL_DRI2_CFLAGS = @EGL_DRI2_CFLAGS@
 EGL_DRI2_LIBS = @EGL_DRI2_LIBS@
+
+MESA_LLVM = @MESA_LLVM@
+
+LLVM_VERSION = @LLVM_VERSION@
+ifneq ($(LLVM_VERSION),)
+  HAVE_LLVM := 0x0$(subst .,0,$(LLVM_VERSION:svn=))
+  DEFINES += -DHAVE_LLVM=$(HAVE_LLVM)
+endif
index d28d5906ba14df5fe525ebc4e0a10e65c660450a..e5196848776baec672274699c22cab38edf6fe25 100644 (file)
@@ -13,7 +13,10 @@ CC = gcc
 CXX = g++
 PIC_FLAGS = -fPIC
 DEFINES =  -D_DARWIN_C_SOURCE -DPTHREADS -D_GNU_SOURCE \
-          -DGLX_ALIAS_UNSUPPORTED -DGLX_INDIRECT_RENDERING
+          -DGLX_ALIAS_UNSUPPORTED \
+          -DGLX_DIRECT_RENDERING -DGLX_USE_APPLEGL
+
+# -DGLX_INDIRECT_RENDERING \
 
 # -D_GNU_SOURCE          - for src/mesa/main ...
 # -DGLX_DIRECT_RENDERING - pulls in libdrm stuff in glx
@@ -49,7 +52,7 @@ GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X
 APP_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXmu -lXt -lXi -lm
 
 # omit glw lib for now:
-SRC_DIRS = glsl glx mesa gallium glu glut/glx glew
+SRC_DIRS = glsl glx/apple mesa gallium glu glut/glx glew
 GLU_DIRS = sgi
 DRIVER_DIRS = osmesa
 #DRIVER_DIRS = dri
index 9017becdafe993dfd70c2a731ff0c54488d7884c..49e357904638ad8ecdea058a98f6f037c4887385 100644 (file)
@@ -52,7 +52,7 @@ GL_LIB_DEPS   = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
 
 # Directories
 SRC_DIRS := glx egl $(SRC_DIRS)
-PROGRAM_DIRS := egl/opengl $(PROGRAM_DIRS)
+PROGRAM_DIRS := egl/eglut egl/opengl $(PROGRAM_DIRS)
 
 # EGL directories
 EGL_DRIVERS_DIRS = glx
index cd664b4171f6c13647fe83c8c603bbbee07a8981..566c7b941c64375d0bb6b493c33ada583032f591 100644 (file)
@@ -48,7 +48,7 @@ GL_LIB_DEPS   = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
 
 # Directories
 SRC_DIRS = gallium mesa gallium/winsys gallium/targets glu egl
-PROGRAM_DIRS = egl/opengl
+PROGRAM_DIRS = egl/eglut egl/opengl
 
 DRIVER_DIRS = dri
 GALLIUM_WINSYS_DIRS = egl_drm
index ead47136f4a1f91c54c84703da12315428b9a7ac..6984aa9b2cda253cf5a93deaf000c7f7c301c6f6 100644 (file)
@@ -7,7 +7,7 @@ CONFIG_NAME = linux-opengl-es
 # Directories to build
 LIB_DIR = lib
 SRC_DIRS = egl glsl mesa/es gallium gallium/winsys gallium/targets
-PROGRAM_DIRS = egl/opengles1 egl/opengles2
+PROGRAM_DIRS = egl/eglut egl/opengles1 egl/opengles2
 
 # egl st needs this
 DEFINES += -DGLX_DIRECT_RENDERING
index c112642f8991f257426c8f39a272f23422233117..3015f5fcbb1ac00dd8c775d61b1a1f98320a1cd3 100644 (file)
@@ -9,7 +9,7 @@ CONFIG_NAME = linux-osmesa
 # Compiler and flags
 CC = gcc
 CXX = g++
-CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DPTHREADS
+CFLAGS = -g -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -DPTHREADS
 CXXFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE
 
 # Work around aliasing bugs - developers should comment this out
@@ -17,12 +17,12 @@ CFLAGS += -fno-strict-aliasing
 CXXFLAGS += -fno-strict-aliasing
 
 # Directories
-SRC_DIRS = gallium mesa glu
+SRC_DIRS = glsl mesa glu
 DRIVER_DIRS = osmesa
 PROGRAM_DIRS = osdemos
 
 
 # Dependencies
-OSMESA_LIB_DEPS = -lm -lpthread
+OSMESA_LIB_DEPS = -lm -lpthread -ldl
 GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(OSMESA_LIB)
 APP_LIB_DEPS = -lm -lpthread
index b3c8da0991606a29a4f7dce68849e9e9015b33b6..090ca2730999aeb47839a8740e02e9dbab5f0399 100644 (file)
@@ -20,7 +20,7 @@ OSMESA_LIB_NAME = libOSMesa16.so
 
 
 # Directories
-SRC_DIRS = gallium mesa glu
+SRC_DIRS = glsl mesa glu
 DRIVER_DIRS = osmesa
 PROGRAM_DIRS = 
 
index 5804ef8e5f77d9e47c7d52588dccec83381c7b09..63de7f9a46055b481b2179e5edb817aeaa74dbb6 100644 (file)
@@ -20,7 +20,7 @@ OSMESA_LIB_NAME = libOSMesa32.so
 
 
 # Directories
-SRC_DIRS = gallium mesa glu
+SRC_DIRS = glsl mesa glu
 DRIVER_DIRS = osmesa
 PROGRAM_DIRS = 
 
index 01f511749c8aac1006e6280a9a518e0c86316446..2811ec9e40875df8a06eafdc625cd890ba493283 100644 (file)
@@ -496,6 +496,7 @@ AC_SUBST([GALLIUM_TARGET_DIRS])
 AC_SUBST([GALLIUM_WINSYS_DIRS])
 AC_SUBST([GALLIUM_DRIVERS_DIRS])
 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
+AC_SUBST([MESA_LLVM])
 
 dnl
 dnl User supplied program configuration
@@ -1007,7 +1008,7 @@ if test "x$enable_egl" = xyes; then
     fi
 
     if test "$with_demos" = yes; then
-        PROGRAM_DIRS="$PROGRAM_DIRS egl/opengl"
+        PROGRAM_DIRS="$PROGRAM_DIRS egl/eglut egl/opengl"
     fi
 fi
 AC_SUBST([EGL_LIB_DEPS])
@@ -1234,8 +1235,16 @@ AC_ARG_ENABLE([gallium],
     [enable_gallium=yes])
 if test "x$enable_gallium" = xyes; then
     SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
+    AC_CHECK_HEADER([udis86.h], [HAS_UDIS86="yes"],
+                [HAS_UDIS86="no"])
+    AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
 fi
 
+AC_SUBST([LLVM_CFLAGS])
+AC_SUBST([LLVM_LIBS])
+AC_SUBST([LLVM_LDFLAGS])
+AC_SUBST([LLVM_VERSION])
+
 dnl
 dnl Gallium state trackers configuration
 dnl
@@ -1369,6 +1378,35 @@ AC_ARG_WITH([max-height],
            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
 )
 
+dnl
+dnl Gallium LLVM
+dnl
+AC_ARG_ENABLE([gallium-llvm],
+    [AS_HELP_STRING([--enable-gallium-llvm],
+        [build gallium LLVM support @<:@default=disabled@:>@])],
+    [enable_gallium_llvm="$enableval"],
+    [enable_gallium_llvm=auto])
+if test "x$enable_gallium_llvm" = xyes; then
+    if test "x$LLVM_CONFIG" != xno; then
+       LLVM_VERSION=`$LLVM_CONFIG --version`
+       LLVM_CFLAGS=`$LLVM_CONFIG --cflags`
+       LLVM_LIBS="`$LLVM_CONFIG --libs jit interpreter nativecodegen bitwriter` -lstdc++"
+
+       if test "x$HAS_UDIS86" != xno; then
+           LLVM_LIBS="$LLVM_LIBS -ludis86"
+           DEFINES="$DEFINES -DHAVE_UDIS86"
+       fi
+       LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
+       GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
+       DEFINES="$DEFINES -DMESA_LLVM -D__STDC_CONSTANT_MACROS"
+       MESA_LLVM=1
+    else
+       MESA_LLVM=0
+    fi
+else
+    MESA_LLVM=0
+fi
+
 dnl
 dnl Gallium helper functions
 dnl
@@ -1514,6 +1552,15 @@ fi
 fi
 echo "        Use XCB:         $enable_xcb"
 
+echo ""
+if test "x$MESA_LLVM" == x1; then
+    echo "        llvm:            yes"
+    echo "        llvm-config:     $LLVM_CONFIG"
+    echo "        llvm-version:    $LLVM_VERSION"
+else
+    echo "        llvm:            no"
+fi
+
 echo ""
 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
     echo "        Gallium:         yes"
index 78ac6e852dda757261ca287c2b9e73df704cd18c..386619e2f7c5fdf02d0c7a0ec3f5f6ab9195ea70 100644 (file)
@@ -34,7 +34,7 @@ glGetStringi command                                  DONE, except for dispatch
 glTexParameterI, glGetTexParameterI commands          DONE, except for dispatch
 glVertexAttribI commands                              not started
 glBindFragDataLocation, glGetFragDataLocation cmds    not started
-glBindBufferRange, glBindBufferBase commands          not started
+glBindBufferRange, glBindBufferBase commands          DONE
 
 
 GL 3.1:
@@ -47,7 +47,7 @@ Primitive restart (GL_NV_primitive_restart)           not started
 Texture buffer objs (GL_ARB_textur_buffer_object)     not started
 Rectangular textures (GL_ARB_texture_rectangle)       DONE
 Uniform buffer objs (GL_ARB_uniform_buffer_object)    not started
-Signed normalized texture formats                     not started
+Signed normalized texture formats                     ~50% done
 
 
 GL 3.2:
index 1c6a4d930ad0b4d75cf53e3640eb4d03c2478a6c..148789153f84a32d6d274d2d3a8b510ce40ba214 100644 (file)
@@ -40,6 +40,15 @@ versions are sent to this list.  Very low traffic.
 Follow the links above for list archives.
 </p>
 
+<p>
+The old Mesa lists hosted at SourceForge are no longer in use.
+The archives are still available, however:
+<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-announce" target="_parent">mesa3d-announce</a>,
+<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-users" target="_parent">mesa3d-users</a>,
+<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-dev" target="_parent">mesa3d-dev</a>.
+</p>
+
+
 <p>For mailing lists about Direct Rendering Modules (drm) in Linux/BSD 
 kernels, see the
 <a href="http://dri.freedesktop.org/wiki/MailingLists" target="_parent">
index 85c132a29fd890fd5df7986bcc2cc4899dc4a89a..2194b651b73fabd00b76dd3cf2bb0c6c1ee7bd07 100644 (file)
@@ -34,6 +34,12 @@ tbd
 <p>None.</p>
 
 
+<h2>Changes</h2>
+<ul>
+<li>Upgraded glext.h to version 61, and upgraded glxext.h
+</ul>
+
+
 <h2>Bug fixes</h2>
 <ul>
 <li>Fixed Gallium glDrawPixels(GL_DEPTH_COMPONENT).
index 473b22aea6321e1488e6cc4592f46cb1f9f91e29..73b148154d67180fbf3c4b96a2e5028088394987 100644 (file)
@@ -6,7 +6,7 @@ extern "C" {
 #endif
 
 /*
-** Copyright (c) 2007-2009 The Khronos Group Inc.
+** Copyright (c) 2007-2010 The Khronos Group Inc.
 ** 
 ** Permission is hereby granted, free of charge, to any person obtaining a
 ** copy of this software and/or associated documentation files (the
@@ -29,10 +29,9 @@ extern "C" {
 */
 
 /* Header file version number, required by OpenGL ABI for Linux */
-/* glext.h last updated $Date: 2009-09-24 13:55:03 -0700 (Thu, 24 Sep 2009) $ */
+/* glext.h last updated $Date: 2010-04-09 02:45:33 -0700 (Fri, 09 Apr 2010) $ */
 /* Current version at http://www.opengl.org/registry/ */
-#define GL_GLEXT_VERSION 56
-
+#define GL_GLEXT_VERSION 61
 /* Function declaration macros - to move into glplatform.h */
 
 #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@@ -887,6 +886,111 @@ extern "C" {
 /* Don't need to reuse tokens from ARB_vertex_array_bgra since they're already in 1.2 core */
 #endif
 
+#ifndef GL_VERSION_3_3
+/* Reuse tokens from ARB_blend_func_extended */
+/* reuse GL_SRC1_COLOR */
+/* reuse GL_ONE_MINUS_SRC1_COLOR */
+/* reuse GL_ONE_MINUS_SRC1_ALPHA */
+/* reuse GL_MAX_DUAL_SOURCE_DRAW_BUFFERS */
+/* Would reuse tokens from ARB_explicit_attrib_location, but it has none */
+/* Reuse tokens from ARB_occlusion_query2 */
+/* reuse GL_ANY_SAMPLES_PASSED */
+/* Reuse tokens from ARB_sampler_objects */
+/* reuse GL_SAMPLER_BINDING */
+/* Would reuse tokens from ARB_shader_bit_encoding, but it has none */
+/* Reuse tokens from ARB_texture_rgb10_a2ui */
+/* reuse GL_RGB10_A2UI */
+/* Reuse tokens from ARB_texture_swizzle */
+/* reuse GL_TEXTURE_SWIZZLE_R */
+/* reuse GL_TEXTURE_SWIZZLE_G */
+/* reuse GL_TEXTURE_SWIZZLE_B */
+/* reuse GL_TEXTURE_SWIZZLE_A */
+/* reuse GL_TEXTURE_SWIZZLE_RGBA */
+/* Reuse tokens from ARB_timer_query */
+/* reuse GL_TIME_ELAPSED */
+/* reuse GL_TIMESTAMP */
+/* Reuse tokens from ARB_vertex_type_2_10_10_10_rev */
+/* reuse GL_INT_2_10_10_10_REV */
+#endif
+
+#ifndef GL_VERSION_4_0
+/* Reuse tokens from ARB_draw_indirect */
+/* reuse GL_DRAW_INDIRECT_BUFFER */
+/* reuse GL_DRAW_INDIRECT_BUFFER_BINDING */
+/* Reuse tokens from ARB_gpu_shader5 */
+/* reuse GL_GEOMETRY_SHADER_INVOCATIONS */
+/* reuse GL_MAX_GEOMETRY_SHADER_INVOCATIONS */
+/* reuse GL_MIN_FRAGMENT_INTERPOLATION_OFFSET */
+/* reuse GL_MAX_FRAGMENT_INTERPOLATION_OFFSET */
+/* reuse GL_FRAGMENT_INTERPOLATION_OFFSET_BITS */
+/* reuse GL_MAX_VERTEX_STREAMS */
+/* Reuse tokens from ARB_gpu_shader_fp64 */
+/* reuse GL_DOUBLE_VEC2 */
+/* reuse GL_DOUBLE_VEC3 */
+/* reuse GL_DOUBLE_VEC4 */
+/* reuse GL_DOUBLE_MAT2 */
+/* reuse GL_DOUBLE_MAT3 */
+/* reuse GL_DOUBLE_MAT4 */
+/* reuse GL_DOUBLE_MAT2x3 */
+/* reuse GL_DOUBLE_MAT2x4 */
+/* reuse GL_DOUBLE_MAT3x2 */
+/* reuse GL_DOUBLE_MAT3x4 */
+/* reuse GL_DOUBLE_MAT4x2 */
+/* reuse GL_DOUBLE_MAT4x3 */
+/* Reuse tokens from ARB_shader_subroutine */
+/* reuse GL_ACTIVE_SUBROUTINES */
+/* reuse GL_ACTIVE_SUBROUTINE_UNIFORMS */
+/* reuse GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS */
+/* reuse GL_ACTIVE_SUBROUTINE_MAX_LENGTH */
+/* reuse GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH */
+/* reuse GL_MAX_SUBROUTINES */
+/* reuse GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS */
+/* reuse GL_NUM_COMPATIBLE_SUBROUTINES */
+/* reuse GL_COMPATIBLE_SUBROUTINES */
+/* Reuse tokens from ARB_tessellation_shader */
+/* reuse GL_PATCHES */
+/* reuse GL_PATCH_VERTICES */
+/* reuse GL_PATCH_DEFAULT_INNER_LEVEL */
+/* reuse GL_PATCH_DEFAULT_OUTER_LEVEL */
+/* reuse GL_TESS_CONTROL_OUTPUT_VERTICES */
+/* reuse GL_TESS_GEN_MODE */
+/* reuse GL_TESS_GEN_SPACING */
+/* reuse GL_TESS_GEN_VERTEX_ORDER */
+/* reuse GL_TESS_GEN_POINT_MODE */
+/* reuse GL_ISOLINES */
+/* reuse GL_FRACTIONAL_ODD */
+/* reuse GL_FRACTIONAL_EVEN */
+/* reuse GL_MAX_PATCH_VERTICES */
+/* reuse GL_MAX_TESS_GEN_LEVEL */
+/* reuse GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS */
+/* reuse GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS */
+/* reuse GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS */
+/* reuse GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS */
+/* reuse GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_PATCH_COMPONENTS */
+/* reuse GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS */
+/* reuse GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS */
+/* reuse GL_MAX_TESS_CONTROL_INPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS */
+/* reuse GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS */
+/* reuse GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS */
+/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER */
+/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER */
+/* reuse GL_TESS_EVALUATION_SHADER */
+/* reuse GL_TESS_CONTROL_SHADER */
+/* Would reuse tokens from ARB_texture_buffer_object_rgb32, but it has none */
+/* Reuse tokens from ARB_transform_feedback2 */
+/* reuse GL_TRANSFORM_FEEDBACK */
+/* reuse GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+/* reuse GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+/* reuse GL_TRANSFORM_FEEDBACK_BINDING */
+/* Reuse tokens from ARB_transform_feedback3 */
+/* reuse GL_MAX_TRANSFORM_FEEDBACK_BUFFERS */
+/* reuse GL_MAX_VERTEX_STREAMS */
+#endif
+
 #ifndef GL_ARB_multitexture
 #define GL_TEXTURE0_ARB                   0x84C0
 #define GL_TEXTURE1_ARB                   0x84C1
@@ -1699,14 +1803,171 @@ extern "C" {
 #endif
 
 #ifndef GL_ARB_texture_gather
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
 #endif
 
 #ifndef GL_ARB_texture_query_lod
 #endif
 
+#ifndef GL_ARB_shading_language_include
+#define GL_SHADER_INCLUDE_ARB             0x8DAE
+#define GL_NAMED_STRING_LENGTH_ARB        0x8DE9
+#define GL_NAMED_STRING_TYPE_ARB          0x8DEA
+#endif
+
+#ifndef GL_ARB_texture_compression_bptc
+#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
+#endif
+
+#ifndef GL_ARB_blend_func_extended
+#define GL_SRC1_COLOR                     0x88F9
+/* reuse GL_SRC1_ALPHA */
+#define GL_ONE_MINUS_SRC1_COLOR           0x88FA
+#define GL_ONE_MINUS_SRC1_ALPHA           0x88FB
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS   0x88FC
+#endif
+
+#ifndef GL_ARB_explicit_attrib_location
+#endif
+
+#ifndef GL_ARB_occlusion_query2
+#define GL_ANY_SAMPLES_PASSED             0x8C2F
+#endif
+
+#ifndef GL_ARB_sampler_objects
+#define GL_SAMPLER_BINDING                0x8919
+#endif
+
+#ifndef GL_ARB_shader_bit_encoding
+#endif
+
+#ifndef GL_ARB_texture_rgb10_a2ui
+#define GL_RGB10_A2UI                     0x906F
+#endif
+
+#ifndef GL_ARB_texture_swizzle
+#define GL_TEXTURE_SWIZZLE_R              0x8E42
+#define GL_TEXTURE_SWIZZLE_G              0x8E43
+#define GL_TEXTURE_SWIZZLE_B              0x8E44
+#define GL_TEXTURE_SWIZZLE_A              0x8E45
+#define GL_TEXTURE_SWIZZLE_RGBA           0x8E46
+#endif
+
+#ifndef GL_ARB_timer_query
+#define GL_TIME_ELAPSED                   0x88BF
+#define GL_TIMESTAMP                      0x8E28
+#endif
+
+#ifndef GL_ARB_vertex_type_2_10_10_10_rev
+/* reuse GL_UNSIGNED_INT_2_10_10_10_REV */
+#define GL_INT_2_10_10_10_REV             0x8D9F
+#endif
+
+#ifndef GL_ARB_draw_indirect
+#define GL_DRAW_INDIRECT_BUFFER           0x8F3F
+#define GL_DRAW_INDIRECT_BUFFER_BINDING   0x8F43
+#endif
+
+#ifndef GL_ARB_gpu_shader5
+#define GL_GEOMETRY_SHADER_INVOCATIONS    0x887F
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
+#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
+#define GL_MAX_VERTEX_STREAMS             0x8E71
+#endif
+
+#ifndef GL_ARB_gpu_shader_fp64
+/* reuse GL_DOUBLE */
+#define GL_DOUBLE_VEC2                    0x8FFC
+#define GL_DOUBLE_VEC3                    0x8FFD
+#define GL_DOUBLE_VEC4                    0x8FFE
+#define GL_DOUBLE_MAT2                    0x8F46
+#define GL_DOUBLE_MAT3                    0x8F47
+#define GL_DOUBLE_MAT4                    0x8F48
+#define GL_DOUBLE_MAT2x3                  0x8F49
+#define GL_DOUBLE_MAT2x4                  0x8F4A
+#define GL_DOUBLE_MAT3x2                  0x8F4B
+#define GL_DOUBLE_MAT3x4                  0x8F4C
+#define GL_DOUBLE_MAT4x2                  0x8F4D
+#define GL_DOUBLE_MAT4x3                  0x8F4E
+#endif
+
+#ifndef GL_ARB_shader_subroutine
+#define GL_ACTIVE_SUBROUTINES             0x8DE5
+#define GL_ACTIVE_SUBROUTINE_UNIFORMS     0x8DE6
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
+#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH   0x8E48
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
+#define GL_MAX_SUBROUTINES                0x8DE7
+#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
+#define GL_NUM_COMPATIBLE_SUBROUTINES     0x8E4A
+#define GL_COMPATIBLE_SUBROUTINES         0x8E4B
+/* reuse GL_UNIFORM_SIZE */
+/* reuse GL_UNIFORM_NAME_LENGTH */
+#endif
+
+#ifndef GL_ARB_tessellation_shader
+#define GL_PATCHES                        0x000E
+#define GL_PATCH_VERTICES                 0x8E72
+#define GL_PATCH_DEFAULT_INNER_LEVEL      0x8E73
+#define GL_PATCH_DEFAULT_OUTER_LEVEL      0x8E74
+#define GL_TESS_CONTROL_OUTPUT_VERTICES   0x8E75
+#define GL_TESS_GEN_MODE                  0x8E76
+#define GL_TESS_GEN_SPACING               0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER          0x8E78
+#define GL_TESS_GEN_POINT_MODE            0x8E79
+/* reuse GL_TRIANGLES */
+/* reuse GL_QUADS */
+#define GL_ISOLINES                       0x8E7A
+/* reuse GL_EQUAL */
+#define GL_FRACTIONAL_ODD                 0x8E7B
+#define GL_FRACTIONAL_EVEN                0x8E7C
+/* reuse GL_CCW */
+/* reuse GL_CW */
+#define GL_MAX_PATCH_VERTICES             0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL             0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS      0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
+#define GL_TESS_EVALUATION_SHADER         0x8E87
+#define GL_TESS_CONTROL_SHADER            0x8E88
+#endif
+
+#ifndef GL_ARB_texture_buffer_object_rgb32
+/* reuse GL_RGB32F */
+/* reuse GL_RGB32UI */
+/* reuse GL_RGB32I */
+#endif
+
+#ifndef GL_ARB_transform_feedback2
+#define GL_TRANSFORM_FEEDBACK             0x8E22
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BINDING     0x8E25
+#endif
+
+#ifndef GL_ARB_transform_feedback3
+#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
+#endif
+
 #ifndef GL_EXT_abgr
 #define GL_ABGR_EXT                       0x8000
 #endif
@@ -3528,9 +3789,9 @@ extern "C" {
 #endif
 
 #ifndef GL_APPLE_element_array
-#define GL_ELEMENT_ARRAY_APPLE            0x8768
-#define GL_ELEMENT_ARRAY_TYPE_APPLE       0x8769
-#define GL_ELEMENT_ARRAY_POINTER_APPLE    0x876A
+#define GL_ELEMENT_ARRAY_APPLE            0x8A0C
+#define GL_ELEMENT_ARRAY_TYPE_APPLE       0x8A0D
+#define GL_ELEMENT_ARRAY_POINTER_APPLE    0x8A0E
 #endif
 
 #ifndef GL_APPLE_fence
@@ -3547,6 +3808,7 @@ extern "C" {
 #define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
 #define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
 #define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
+#define GL_STORAGE_CLIENT_APPLE           0x85B4
 #define GL_STORAGE_CACHED_APPLE           0x85BE
 #define GL_STORAGE_SHARED_APPLE           0x85BF
 #endif
@@ -4393,6 +4655,16 @@ extern "C" {
 #ifndef GL_NV_texture_barrier
 #endif
 
+#ifndef GL_AMD_shader_stencil_export
+#endif
+
+#ifndef GL_AMD_seamless_cubemap_per_texture
+/* reuse GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB */
+#endif
+
+#ifndef GL_AMD_conservative_depth
+#endif
+
 
 /*************************************************************/
 
@@ -4481,12 +4753,12 @@ typedef struct __GLsync *GLsync;
 #ifndef GL_VERSION_1_2
 #define GL_VERSION_1_2 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);
-GLAPI void APIENTRY glBlendEquation (GLenum);
-GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+GLAPI void APIENTRY glBlendEquation (GLenum mode);
+GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
 typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
@@ -4499,38 +4771,38 @@ typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level,
 #ifndef GL_VERSION_1_2_DEPRECATED
 #define GL_VERSION_1_2_DEPRECATED 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
-GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
-GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean);
-GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean);
-GLAPI void APIENTRY glResetHistogram (GLenum);
-GLAPI void APIENTRY glResetMinmax (GLenum);
+GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, GLvoid *table);
+GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params);
+GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params);
+GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, GLvoid *image);
+GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glResetHistogram (GLenum target);
+GLAPI void APIENTRY glResetMinmax (GLenum target);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
 typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
@@ -4569,15 +4841,15 @@ typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
 #ifndef GL_VERSION_1_3
 #define GL_VERSION_1_3 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTexture (GLenum);
-GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean);
-GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *);
+GLAPI void APIENTRY glActiveTexture (GLenum texture);
+GLAPI void APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
+GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
 typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
@@ -4593,43 +4865,43 @@ typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint le
 #ifndef GL_VERSION_1_3_DEPRECATED
 #define GL_VERSION_1_3_DEPRECATED 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClientActiveTexture (GLenum);
-GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint);
-GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort);
-GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *);
-GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *);
-GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *);
-GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *);
-GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *);
+GLAPI void APIENTRY glClientActiveTexture (GLenum texture);
+GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s);
+GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s);
+GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s);
+GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s);
+GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t);
+GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t);
+GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t);
+GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t);
+GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r);
+GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r);
+GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q);
+GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m);
+GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m);
+GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m);
+GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
 typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
@@ -4673,13 +4945,13 @@ typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
 #ifndef GL_VERSION_1_4
 #define GL_VERSION_1_4 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei);
-GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
-GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat);
-GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *);
-GLAPI void APIENTRY glPointParameteri (GLenum, GLint);
-GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *);
+GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
+GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
+GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
 typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
@@ -4693,44 +4965,44 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *p
 #ifndef GL_VERSION_1_4_DEPRECATED
 #define GL_VERSION_1_4_DEPRECATED 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogCoordf (GLfloat);
-GLAPI void APIENTRY glFogCoordfv (const GLfloat *);
-GLAPI void APIENTRY glFogCoordd (GLdouble);
-GLAPI void APIENTRY glFogCoorddv (const GLdouble *);
-GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte);
-GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *);
-GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *);
-GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *);
-GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint);
-GLAPI void APIENTRY glSecondaryColor3iv (const GLint *);
-GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *);
-GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte);
-GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *);
-GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *);
-GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort);
-GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *);
-GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos2dv (const GLdouble *);
-GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos2fv (const GLfloat *);
-GLAPI void APIENTRY glWindowPos2i (GLint, GLint);
-GLAPI void APIENTRY glWindowPos2iv (const GLint *);
-GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos2sv (const GLshort *);
-GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos3dv (const GLdouble *);
-GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos3fv (const GLfloat *);
-GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint);
-GLAPI void APIENTRY glWindowPos3iv (const GLint *);
-GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos3sv (const GLshort *);
+GLAPI void APIENTRY glFogCoordf (GLfloat coord);
+GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord);
+GLAPI void APIENTRY glFogCoordd (GLdouble coord);
+GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord);
+GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue);
+GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v);
+GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue);
+GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v);
+GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue);
+GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v);
+GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue);
+GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v);
+GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue);
+GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v);
+GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue);
+GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v);
+GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue);
+GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v);
+GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue);
+GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v);
+GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y);
+GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y);
+GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y);
+GLAPI void APIENTRY glWindowPos2iv (const GLint *v);
+GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y);
+GLAPI void APIENTRY glWindowPos2sv (const GLshort *v);
+GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glWindowPos3iv (const GLint *v);
+GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glWindowPos3sv (const GLshort *v);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
 typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
@@ -4775,25 +5047,25 @@ typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
 #ifndef GL_VERSION_1_5
 #define GL_VERSION_1_5 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *);
-GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *);
-GLAPI GLboolean APIENTRY glIsQuery (GLuint);
-GLAPI void APIENTRY glBeginQuery (GLenum, GLuint);
-GLAPI void APIENTRY glEndQuery (GLenum);
-GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *);
-GLAPI void APIENTRY glBindBuffer (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsBuffer (GLuint);
-GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum);
-GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *);
-GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *);
-GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum);
-GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum);
-GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *);
+GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);
+GLAPI GLboolean APIENTRY glIsQuery (GLuint id);
+GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);
+GLAPI void APIENTRY glEndQuery (GLenum target);
+GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
+GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
+GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
+GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);
+GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
+GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
+GLAPI GLvoid* APIENTRY glMapBuffer (GLenum target, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);
+GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, GLvoid* *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
 typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
@@ -4819,99 +5091,99 @@ typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname
 #ifndef GL_VERSION_2_0
 #define GL_VERSION_2_0 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum);
-GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *);
-GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint);
-GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint);
-GLAPI void APIENTRY glAttachShader (GLuint, GLuint);
-GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *);
-GLAPI void APIENTRY glCompileShader (GLuint);
+GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
+GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);
+GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+GLAPI void APIENTRY glStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
+GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
+GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
+GLAPI void APIENTRY glCompileShader (GLuint shader);
 GLAPI GLuint APIENTRY glCreateProgram (void);
-GLAPI GLuint APIENTRY glCreateShader (GLenum);
-GLAPI void APIENTRY glDeleteProgram (GLuint);
-GLAPI void APIENTRY glDeleteShader (GLuint);
-GLAPI void APIENTRY glDetachShader (GLuint, GLuint);
-GLAPI void APIENTRY glDisableVertexAttribArray (GLuint);
-GLAPI void APIENTRY glEnableVertexAttribArray (GLuint);
-GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
-GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
-GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *);
-GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *);
-GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *);
-GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *);
-GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *);
-GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *);
-GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *);
-GLAPI GLboolean APIENTRY glIsProgram (GLuint);
-GLAPI GLboolean APIENTRY glIsShader (GLuint);
-GLAPI void APIENTRY glLinkProgram (GLuint);
-GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *);
-GLAPI void APIENTRY glUseProgram (GLuint);
-GLAPI void APIENTRY glUniform1f (GLint, GLfloat);
-GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform1i (GLint, GLint);
-GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glValidateProgram (GLuint);
-GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble);
-GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat);
-GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort);
-GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
-GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *);
-GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *);
-GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
+GLAPI GLuint APIENTRY glCreateShader (GLenum type);
+GLAPI void APIENTRY glDeleteProgram (GLuint program);
+GLAPI void APIENTRY glDeleteShader (GLuint shader);
+GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
+GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
+GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
+GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
+GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
+GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid* *pointer);
+GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
+GLAPI GLboolean APIENTRY glIsShader (GLuint shader);
+GLAPI void APIENTRY glLinkProgram (GLuint program);
+GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
+GLAPI void APIENTRY glUseProgram (GLuint program);
+GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);
+GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
+GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glValidateProgram (GLuint program);
+GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
+GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);
+GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
 typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
@@ -5011,12 +5283,12 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size,
 #ifndef GL_VERSION_2_1
 #define GL_VERSION_2_1 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
 typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
@@ -5033,64 +5305,64 @@ typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei co
 /* ARB_map_buffer_range */
 /* ARB_vertex_array_object */
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaski (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
-GLAPI void APIENTRY glGetBooleani_v (GLenum, GLuint, GLboolean *);
-GLAPI void APIENTRY glGetIntegeri_v (GLenum, GLuint, GLint *);
-GLAPI void APIENTRY glEnablei (GLenum, GLuint);
-GLAPI void APIENTRY glDisablei (GLenum, GLuint);
-GLAPI GLboolean APIENTRY glIsEnabledi (GLenum, GLuint);
-GLAPI void APIENTRY glBeginTransformFeedback (GLenum);
+GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
+GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
+GLAPI void APIENTRY glEnablei (GLenum target, GLuint index);
+GLAPI void APIENTRY glDisablei (GLenum target, GLuint index);
+GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);
+GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);
 GLAPI void APIENTRY glEndTransformFeedback (void);
-GLAPI void APIENTRY glBindBufferRange (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
-GLAPI void APIENTRY glBindBufferBase (GLenum, GLuint, GLuint);
-GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint, GLsizei, const GLchar* *, GLenum);
-GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
-GLAPI void APIENTRY glClampColor (GLenum, GLenum);
-GLAPI void APIENTRY glBeginConditionalRender (GLuint, GLenum);
+GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);
+GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);
 GLAPI void APIENTRY glEndConditionalRender (void);
-GLAPI void APIENTRY glVertexAttribIPointer (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetVertexAttribIiv (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint, GLenum, GLuint *);
-GLAPI void APIENTRY glVertexAttribI1i (GLuint, GLint);
-GLAPI void APIENTRY glVertexAttribI2i (GLuint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI3i (GLuint, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI4i (GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI1ui (GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI2ui (GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI3ui (GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI4ui (GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI1iv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI2iv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI3iv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI4iv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI1uiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI2uiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI3uiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI4uiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI4bv (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttribI4sv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttribI4ubv (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttribI4usv (GLuint, const GLushort *);
-GLAPI void APIENTRY glGetUniformuiv (GLuint, GLint, GLuint *);
-GLAPI void APIENTRY glBindFragDataLocation (GLuint, GLuint, const GLchar *);
-GLAPI GLint APIENTRY glGetFragDataLocation (GLuint, const GLchar *);
-GLAPI void APIENTRY glUniform1ui (GLint, GLuint);
-GLAPI void APIENTRY glUniform2ui (GLint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform3ui (GLint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform4ui (GLint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform1uiv (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform2uiv (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform3uiv (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform4uiv (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glTexParameterIiv (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glTexParameterIuiv (GLenum, GLenum, const GLuint *);
-GLAPI void APIENTRY glGetTexParameterIiv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetTexParameterIuiv (GLenum, GLenum, GLuint *);
-GLAPI void APIENTRY glClearBufferiv (GLenum, GLint, const GLint *);
-GLAPI void APIENTRY glClearBufferuiv (GLenum, GLint, const GLuint *);
-GLAPI void APIENTRY glClearBufferfv (GLenum, GLint, const GLfloat *);
-GLAPI void APIENTRY glClearBufferfi (GLenum, GLint, GLfloat, GLint);
-GLAPI const GLubyte * APIENTRY glGetStringi (GLenum, GLuint);
+GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);
+GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);
+GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);
+GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
+GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
+GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);
+GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);
+GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
+GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
+GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
+GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+GLAPI const GLubyte * APIENTRY glGetStringi (GLenum name, GLuint index);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
 typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
@@ -5158,10 +5430,10 @@ typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint ind
 /* ARB_copy_buffer */
 /* ARB_uniform_buffer_object */
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstanced (GLenum, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glDrawElementsInstanced (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
-GLAPI void APIENTRY glTexBuffer (GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint);
+GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
 typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
@@ -5177,56 +5449,80 @@ typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
 /* ARB_sync */
 /* ARB_texture_multisample */
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetInteger64i_v (GLenum, GLuint, GLint64 *);
-GLAPI void APIENTRY glGetBufferParameteri64v (GLenum, GLenum, GLint64 *);
-GLAPI void APIENTRY glProgramParameteri (GLuint, GLenum, GLint);
-GLAPI void APIENTRY glFramebufferTexture (GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTextureFace (GLenum, GLenum, GLuint, GLint, GLenum);
+GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
+GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);
+GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
 typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
 typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+#endif
+
+#ifndef GL_VERSION_3_3
+#define GL_VERSION_3_3 1
+/* OpenGL 3.3 also reuses entry points from these extensions: */
+/* ARB_blend_func_extended */
+/* ARB_sampler_objects */
+/* ARB_explicit_attrib_location, but it has none */
+/* ARB_occlusion_query2 (no entry points) */
+/* ARB_shader_bit_encoding (no entry points) */
+/* ARB_texture_rgb10_a2ui (no entry points) */
+/* ARB_texture_swizzle (no entry points) */
+/* ARB_timer_query */
+/* ARB_vertex_type_2_10_10_10_rev */
+#endif
+
+#ifndef GL_VERSION_4_0
+#define GL_VERSION_4_0 1
+/* OpenGL 4.0 also reuses entry points from these extensions: */
+/* ARB_gpu_shader5 (no entry points) */
+/* ARB_gpu_shader_fp64 */
+/* ARB_shader_subroutine */
+/* ARB_tessellation_shader */
+/* ARB_texture_buffer_object_rgb32 (no entry points) */
+/* ARB_transform_feedback2 */
+/* ARB_transform_feedback3 */
 #endif
 
 #ifndef GL_ARB_multitexture
 #define GL_ARB_multitexture 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTextureARB (GLenum);
-GLAPI void APIENTRY glClientActiveTextureARB (GLenum);
-GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint);
-GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort);
-GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *);
+GLAPI void APIENTRY glActiveTextureARB (GLenum texture);
+GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture);
+GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s);
+GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s);
+GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s);
+GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s);
+GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t);
+GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t);
+GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t);
+GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t);
+GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r);
+GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r);
+GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q);
+GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
 typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
@@ -5267,10 +5563,10 @@ typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLsh
 #ifndef GL_ARB_transpose_matrix
 #define GL_ARB_transpose_matrix 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *);
-GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *);
-GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *);
-GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *);
+GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m);
+GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m);
+GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m);
+GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
 typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
@@ -5281,7 +5577,7 @@ typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
 #ifndef GL_ARB_multisample
 #define GL_ARB_multisample 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean);
+GLAPI void APIENTRY glSampleCoverageARB (GLclampf value, GLboolean invert);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
 #endif
@@ -5297,13 +5593,13 @@ typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean i
 #ifndef GL_ARB_texture_compression
 #define GL_ARB_texture_compression 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, GLvoid *img);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
 typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
@@ -5321,8 +5617,8 @@ typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint
 #ifndef GL_ARB_point_parameters
 #define GL_ARB_point_parameters 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat);
-GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *);
+GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
 typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
@@ -5331,16 +5627,16 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLflo
 #ifndef GL_ARB_vertex_blend
 #define GL_ARB_vertex_blend 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *);
-GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *);
-GLAPI void APIENTRY glWeightivARB (GLint, const GLint *);
-GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *);
-GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *);
-GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *);
-GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *);
-GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *);
-GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glVertexBlendARB (GLint);
+GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights);
+GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights);
+GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights);
+GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights);
+GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights);
+GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights);
+GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights);
+GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights);
+GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glVertexBlendARB (GLint count);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
 typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
@@ -5357,11 +5653,11 @@ typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
 #ifndef GL_ARB_matrix_palette
 #define GL_ARB_matrix_palette 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint);
-GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *);
-GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *);
-GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *);
-GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index);
+GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices);
+GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices);
+GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices);
+GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
 typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
@@ -5401,22 +5697,22 @@ typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type
 #ifndef GL_ARB_window_pos
 #define GL_ARB_window_pos 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *);
-GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *);
-GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint);
-GLAPI void APIENTRY glWindowPos2ivARB (const GLint *);
-GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos2svARB (const GLshort *);
-GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *);
-GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *);
-GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint);
-GLAPI void APIENTRY glWindowPos3ivARB (const GLint *);
-GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos3svARB (const GLshort *);
+GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y);
+GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y);
+GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y);
+GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v);
+GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y);
+GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v);
+GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v);
+GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
 typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
@@ -5439,68 +5735,68 @@ typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
 #ifndef GL_ARB_vertex_program
 #define GL_ARB_vertex_program 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble);
-GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat);
-GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort);
-GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
-GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *);
-GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *);
-GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint);
-GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint);
-GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *);
-GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *);
-GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *);
-GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *);
-GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *);
-GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *);
-GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *);
-GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *);
-GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *);
-GLAPI GLboolean APIENTRY glIsProgramARB (GLuint);
+GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x);
+GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x);
+GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index);
+GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index);
+GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program);
+GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs);
+GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs);
+GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
+GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
+GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
+GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
+GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, GLvoid *string);
+GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, GLvoid* *pointer);
+GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
 typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
@@ -5574,17 +5870,17 @@ typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
 #ifndef GL_ARB_vertex_buffer_object
 #define GL_ARB_vertex_buffer_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindBufferARB (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteBuffersARB (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenBuffersARB (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsBufferARB (GLuint);
-GLAPI void APIENTRY glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum);
-GLAPI void APIENTRY glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *);
-GLAPI void APIENTRY glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *);
-GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum, GLenum);
-GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum);
-GLAPI void APIENTRY glGetBufferParameterivARB (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
+GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer);
+GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers);
+GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers);
+GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer);
+GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
+GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
+GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
+GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum target, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target);
+GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, GLvoid* *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
 typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
@@ -5602,14 +5898,14 @@ typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pn
 #ifndef GL_ARB_occlusion_query
 #define GL_ARB_occlusion_query 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueriesARB (GLsizei, GLuint *);
-GLAPI void APIENTRY glDeleteQueriesARB (GLsizei, const GLuint *);
-GLAPI GLboolean APIENTRY glIsQueryARB (GLuint);
-GLAPI void APIENTRY glBeginQueryARB (GLenum, GLuint);
-GLAPI void APIENTRY glEndQueryARB (GLenum);
-GLAPI void APIENTRY glGetQueryivARB (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetQueryObjectivARB (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint, GLenum, GLuint *);
+GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids);
+GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id);
+GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id);
+GLAPI void APIENTRY glEndQueryARB (GLenum target);
+GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
 typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
@@ -5624,45 +5920,45 @@ typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname,
 #ifndef GL_ARB_shader_objects
 #define GL_ARB_shader_objects 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB);
-GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum);
-GLAPI void APIENTRY glDetachObjectARB (GLhandleARB, GLhandleARB);
-GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum);
-GLAPI void APIENTRY glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *);
-GLAPI void APIENTRY glCompileShaderARB (GLhandleARB);
+GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj);
+GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname);
+GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj);
+GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType);
+GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
+GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj);
 GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
-GLAPI void APIENTRY glAttachObjectARB (GLhandleARB, GLhandleARB);
-GLAPI void APIENTRY glLinkProgramARB (GLhandleARB);
-GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB);
-GLAPI void APIENTRY glValidateProgramARB (GLhandleARB);
-GLAPI void APIENTRY glUniform1fARB (GLint, GLfloat);
-GLAPI void APIENTRY glUniform2fARB (GLint, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform1iARB (GLint, GLint);
-GLAPI void APIENTRY glUniform2iARB (GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform3iARB (GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform4iARB (GLint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform1fvARB (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform2fvARB (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform3fvARB (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform4fvARB (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform1ivARB (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform2ivARB (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform3ivARB (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform4ivARB (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *);
-GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
-GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *);
-GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB, const GLcharARB *);
-GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *);
-GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB, GLint, GLfloat *);
-GLAPI void APIENTRY glGetUniformivARB (GLhandleARB, GLint, GLint *);
-GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
+GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj);
+GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj);
+GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj);
+GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj);
+GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0);
+GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0);
+GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
+GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
+GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
+GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params);
+GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params);
+GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
 typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
@@ -5708,9 +6004,9 @@ typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei m
 #ifndef GL_ARB_vertex_shader
 #define GL_ARB_vertex_shader 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *);
-GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *);
-GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB, const GLcharARB *);
+GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name);
+GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
 typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
@@ -5740,7 +6036,7 @@ typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj,
 #ifndef GL_ARB_draw_buffers
 #define GL_ARB_draw_buffers 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawBuffersARB (GLsizei, const GLenum *);
+GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
 #endif
@@ -5752,7 +6048,7 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs)
 #ifndef GL_ARB_color_buffer_float
 #define GL_ARB_color_buffer_float 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClampColorARB (GLenum, GLenum);
+GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
 #endif
@@ -5776,8 +6072,8 @@ typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
 #ifndef GL_ARB_draw_instanced
 #define GL_ARB_draw_instanced 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
+GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
 typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
@@ -5786,26 +6082,26 @@ typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei
 #ifndef GL_ARB_framebuffer_object
 #define GL_ARB_framebuffer_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint);
-GLAPI void APIENTRY glBindRenderbuffer (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenRenderbuffers (GLsizei, GLuint *);
-GLAPI void APIENTRY glRenderbufferStorage (GLenum, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum, GLenum, GLint *);
-GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint);
-GLAPI void APIENTRY glBindFramebuffer (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteFramebuffers (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenFramebuffers (GLsizei, GLuint *);
-GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum);
-GLAPI void APIENTRY glFramebufferTexture1D (GLenum, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTexture2D (GLenum, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTexture3D (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGenerateMipmap (GLenum);
-GLAPI void APIENTRY glBlitFramebuffer (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
-GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glFramebufferTextureLayer (GLenum, GLenum, GLuint, GLint, GLint);
+GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);
+GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
+GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
+GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);
+GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
+GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
+GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
+GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);
+GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateMipmap (GLenum target);
+GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
 typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
@@ -5836,10 +6132,10 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum
 #ifndef GL_ARB_geometry_shader4
 #define GL_ARB_geometry_shader4 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriARB (GLuint, GLenum, GLint);
-GLAPI void APIENTRY glFramebufferTextureARB (GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum, GLenum, GLuint, GLint, GLenum);
+GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);
+GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
@@ -5854,7 +6150,7 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLen
 #ifndef GL_ARB_instanced_arrays
 #define GL_ARB_instanced_arrays 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint, GLuint);
+GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
 #endif
@@ -5862,8 +6158,8 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint d
 #ifndef GL_ARB_map_buffer_range
 #define GL_ARB_map_buffer_range 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLvoid* APIENTRY glMapBufferRange (GLenum, GLintptr, GLsizeiptr, GLbitfield);
-GLAPI void APIENTRY glFlushMappedBufferRange (GLenum, GLintptr, GLsizeiptr);
+GLAPI GLvoid* APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
 typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
@@ -5872,7 +6168,7 @@ typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintpt
 #ifndef GL_ARB_texture_buffer_object
 #define GL_ARB_texture_buffer_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferARB (GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
 #endif
@@ -5888,10 +6184,10 @@ typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalfo
 #ifndef GL_ARB_vertex_array_object
 #define GL_ARB_vertex_array_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindVertexArray (GLuint);
-GLAPI void APIENTRY glDeleteVertexArrays (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenVertexArrays (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsVertexArray (GLuint);
+GLAPI void APIENTRY glBindVertexArray (GLuint array);
+GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
+GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
+GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
 typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
@@ -5902,13 +6198,13 @@ typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
 #ifndef GL_ARB_uniform_buffer_object
 #define GL_ARB_uniform_buffer_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetUniformIndices (GLuint, GLsizei, const GLchar* *, GLuint *);
-GLAPI void APIENTRY glGetActiveUniformsiv (GLuint, GLsizei, const GLuint *, GLenum, GLint *);
-GLAPI void APIENTRY glGetActiveUniformName (GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint, const GLchar *);
-GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint, GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void APIENTRY glUniformBlockBinding (GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices);
+GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
+GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
+GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
+GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices);
 typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
@@ -5926,7 +6222,7 @@ typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint un
 #ifndef GL_ARB_copy_buffer
 #define GL_ARB_copy_buffer 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyBufferSubData (GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr);
+GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
 #endif
@@ -5942,10 +6238,10 @@ typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum w
 #ifndef GL_ARB_draw_elements_base_vertex
 #define GL_ARB_draw_elements_base_vertex 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum, GLsizei, GLenum, const GLvoid *, GLint);
-GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *, GLint);
-GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei, GLint);
-GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei, const GLint *);
+GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
+GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
+GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex);
+GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, const GLint *basevertex);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
 typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
@@ -5960,7 +6256,7 @@ typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, cons
 #ifndef GL_ARB_provoking_vertex
 #define GL_ARB_provoking_vertex 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProvokingVertex (GLenum);
+GLAPI void APIENTRY glProvokingVertex (GLenum mode);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
 #endif
@@ -5972,13 +6268,13 @@ typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
 #ifndef GL_ARB_sync
 #define GL_ARB_sync 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLsync APIENTRY glFenceSync (GLenum, GLbitfield);
-GLAPI GLboolean APIENTRY glIsSync (GLsync);
-GLAPI void APIENTRY glDeleteSync (GLsync);
-GLAPI GLenum APIENTRY glClientWaitSync (GLsync, GLbitfield, GLuint64);
-GLAPI void APIENTRY glWaitSync (GLsync, GLbitfield, GLuint64);
-GLAPI void APIENTRY glGetInteger64v (GLenum, GLint64 *);
-GLAPI void APIENTRY glGetSynciv (GLsync, GLenum, GLsizei, GLsizei *, GLint *);
+GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);
+GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
+GLAPI void APIENTRY glDeleteSync (GLsync sync);
+GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
+GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
+GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
 typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
@@ -5992,10 +6288,10 @@ typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei
 #ifndef GL_ARB_texture_multisample
 #define GL_ARB_texture_multisample 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage2DMultisample (GLenum, GLsizei, GLint, GLsizei, GLsizei, GLboolean);
-GLAPI void APIENTRY glTexImage3DMultisample (GLenum, GLsizei, GLint, GLsizei, GLsizei, GLsizei, GLboolean);
-GLAPI void APIENTRY glGetMultisamplefv (GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glSampleMaski (GLuint, GLbitfield);
+GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
+GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
 typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
@@ -6010,10 +6306,10 @@ typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask);
 #ifndef GL_ARB_draw_buffers_blend
 #define GL_ARB_draw_buffers_blend 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationi (GLuint, GLenum);
-GLAPI void APIENTRY glBlendEquationSeparatei (GLuint, GLenum, GLenum);
-GLAPI void APIENTRY glBlendFunci (GLuint, GLenum, GLenum);
-GLAPI void APIENTRY glBlendFuncSeparatei (GLuint, GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);
+GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);
+GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
 typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
@@ -6024,7 +6320,7 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB,
 #ifndef GL_ARB_sample_shading
 #define GL_ARB_sample_shading 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMinSampleShading (GLclampf);
+GLAPI void APIENTRY glMinSampleShading (GLclampf value);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLclampf value);
 #endif
@@ -6041,6 +6337,314 @@ typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLclampf value);
 #define GL_ARB_texture_query_lod 1
 #endif
 
+#ifndef GL_ARB_shading_language_include
+#define GL_ARB_shading_language_include 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
+GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);
+GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length);
+GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);
+GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
+GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
+typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
+typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length);
+typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
+typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_ARB_blend_func_extended
+#define GL_ARB_blend_func_extended 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
+#endif
+
+#ifndef GL_ARB_sampler_objects
+#define GL_ARB_sampler_objects 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);
+GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);
+GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);
+GLAPI void APIENTRY glBindSampler (GLenum unit, GLuint sampler);
+GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
+GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
+GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
+GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
+GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
+GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetSamplerParameterIfv (GLuint sampler, GLenum pname, GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
+typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
+typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
+typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLenum unit, GLuint sampler);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_ARB_timer_query
+#define GL_ARB_timer_query 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);
+GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
+#endif
+
+#ifndef GL_ARB_vertex_type_2_10_10_10_rev
+#define GL_ARB_vertex_type_2_10_10_10_rev 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value);
+GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value);
+GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value);
+GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value);
+GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value);
+GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value);
+GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color);
+GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color);
+GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color);
+GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color);
+GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color);
+GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color);
+GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value);
+typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color);
+typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
+typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+#endif
+
+#ifndef GL_ARB_draw_indirect
+#define GL_ARB_draw_indirect 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const GLvoid *indirect);
+GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const GLvoid *indirect);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid *indirect);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect);
+#endif
+
+#ifndef GL_ARB_gpu_shader_fp64
+#define GL_ARB_gpu_shader_fp64 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);
+GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);
+GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
+GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
+typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+#endif
+
+#ifndef GL_ARB_shader_subroutine
+#define GL_ARB_shader_subroutine 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
+GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
+GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
+GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
+GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
+GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
+typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
+typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
+#endif
+
+#ifndef GL_ARB_tessellation_shader
+#define GL_ARB_tessellation_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);
+GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
+typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
+#endif
+
+#ifndef GL_ARB_transform_feedback2
+#define GL_ARB_transform_feedback2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);
+GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
+GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);
+GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);
+GLAPI void APIENTRY glPauseTransformFeedback (void);
+GLAPI void APIENTRY glResumeTransformFeedback (void);
+GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
+typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
+#endif
+
+#ifndef GL_ARB_transform_feedback3
+#define GL_ARB_transform_feedback3 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
+GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
+GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);
+GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
+typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
+#endif
+
 #ifndef GL_EXT_abgr
 #define GL_EXT_abgr 1
 #endif
@@ -6048,7 +6652,7 @@ typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLclampf value);
 #ifndef GL_EXT_blend_color
 #define GL_EXT_blend_color 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf);
+GLAPI void APIENTRY glBlendColorEXT (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
 #endif
@@ -6056,7 +6660,7 @@ typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, G
 #ifndef GL_EXT_polygon_offset
 #define GL_EXT_polygon_offset 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat);
+GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
 #endif
@@ -6068,8 +6672,8 @@ typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias
 #ifndef GL_EXT_texture3D
 #define GL_EXT_texture3D 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
 typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
@@ -6078,8 +6682,8 @@ typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level,
 #ifndef GL_SGIS_texture_filter4
 #define GL_SGIS_texture_filter4 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights);
+GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
 typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
@@ -6088,8 +6692,8 @@ typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filte
 #ifndef GL_EXT_subtexture
 #define GL_EXT_subtexture 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
 typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
@@ -6098,11 +6702,11 @@ typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level,
 #ifndef GL_EXT_copy_texture
 #define GL_EXT_copy_texture 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
 typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
@@ -6114,16 +6718,16 @@ typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint lev
 #ifndef GL_EXT_histogram
 #define GL_EXT_histogram 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean);
-GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean);
-GLAPI void APIENTRY glResetHistogramEXT (GLenum);
-GLAPI void APIENTRY glResetMinmaxEXT (GLenum);
+GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glResetHistogramEXT (GLenum target);
+GLAPI void APIENTRY glResetMinmaxEXT (GLenum target);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
 typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
@@ -6140,19 +6744,19 @@ typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
 #ifndef GL_EXT_convolution
 #define GL_EXT_convolution 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
-GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
+GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params);
+GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params);
+GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, GLvoid *image);
+GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
 typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
@@ -6176,13 +6780,13 @@ typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum in
 #ifndef GL_SGI_color_table
 #define GL_SGI_color_table 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, GLvoid *table);
+GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
 typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
@@ -6196,7 +6800,7 @@ typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GL
 #ifndef GL_SGIX_pixel_texture
 #define GL_SGIX_pixel_texture 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTexGenSGIX (GLenum);
+GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
 #endif
@@ -6204,12 +6808,12 @@ typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
 #ifndef GL_SGIS_pixel_texture
 #define GL_SGIS_pixel_texture 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint);
-GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *);
-GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat);
-GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *);
-GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *);
-GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *);
+GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param);
+GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params);
+GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
 typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
@@ -6222,8 +6826,8 @@ typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, G
 #ifndef GL_SGIS_texture4D
 #define GL_SGIS_texture4D 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
 typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
@@ -6240,12 +6844,12 @@ typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level,
 #ifndef GL_EXT_texture_object
 #define GL_EXT_texture_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *);
-GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint);
-GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *);
+GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences);
+GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture);
+GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures);
+GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures);
+GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture);
+GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
 typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
@@ -6258,8 +6862,8 @@ typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint
 #ifndef GL_SGIS_detail_texture
 #define GL_SGIS_detail_texture 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *);
+GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
+GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
 typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
@@ -6268,8 +6872,8 @@ typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *
 #ifndef GL_SGIS_sharpen_texture
 #define GL_SGIS_sharpen_texture 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *);
+GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
+GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
 typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
@@ -6286,8 +6890,8 @@ typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat
 #ifndef GL_SGIS_multisample
 #define GL_SGIS_multisample 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean);
-GLAPI void APIENTRY glSamplePatternSGIS (GLenum);
+GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert);
+GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
 typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
@@ -6300,15 +6904,15 @@ typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
 #ifndef GL_EXT_vertex_array
 #define GL_EXT_vertex_array 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glArrayElementEXT (GLint);
-GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei);
-GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *);
-GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *);
-GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glArrayElementEXT (GLint i);
+GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count);
+GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer);
+GLAPI void APIENTRY glGetPointervEXT (GLenum pname, GLvoid* *params);
+GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
 typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
@@ -6348,7 +6952,7 @@ typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLs
 #ifndef GL_EXT_blend_minmax
 #define GL_EXT_blend_minmax 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationEXT (GLenum);
+GLAPI void APIENTRY glBlendEquationEXT (GLenum mode);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
 #endif
@@ -6376,10 +6980,10 @@ typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
 #ifndef GL_SGIX_sprite
 #define GL_SGIX_sprite 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat);
-GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *);
-GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint);
-GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *);
+GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param);
+GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
 typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
@@ -6394,8 +6998,8 @@ typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLi
 #ifndef GL_EXT_point_parameters
 #define GL_EXT_point_parameters 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat);
-GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *);
+GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
 typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
@@ -6404,8 +7008,8 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLflo
 #ifndef GL_SGIS_point_parameters
 #define GL_SGIS_point_parameters 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat);
-GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *);
+GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
 typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
@@ -6415,11 +7019,11 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfl
 #define GL_SGIX_instruments 1
 #ifdef GL_GLEXT_PROTOTYPES
 GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
-GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *);
-GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *);
-GLAPI void APIENTRY glReadInstrumentsSGIX (GLint);
+GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer);
+GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p);
+GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker);
 GLAPI void APIENTRY glStartInstrumentsSGIX (void);
-GLAPI void APIENTRY glStopInstrumentsSGIX (GLint);
+GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
 typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
@@ -6436,7 +7040,7 @@ typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
 #ifndef GL_SGIX_framezoom
 #define GL_SGIX_framezoom 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFrameZoomSGIX (GLint);
+GLAPI void APIENTRY glFrameZoomSGIX (GLint factor);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
 #endif
@@ -6452,10 +7056,10 @@ typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
 #ifndef GL_SGIX_polynomial_ffd
 #define GL_SGIX_polynomial_ffd 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
-GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
-GLAPI void APIENTRY glDeformSGIX (GLbitfield);
-GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield);
+GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
+GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
+GLAPI void APIENTRY glDeformSGIX (GLbitfield mask);
+GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
 typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
@@ -6466,7 +7070,7 @@ typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mas
 #ifndef GL_SGIX_reference_plane
 #define GL_SGIX_reference_plane 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *);
+GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
 #endif
@@ -6486,8 +7090,8 @@ typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
 #ifndef GL_SGIS_fog_function
 #define GL_SGIS_fog_function 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *);
-GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *);
+GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points);
+GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
 typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
@@ -6500,12 +7104,12 @@ typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
 #ifndef GL_HP_image_transform
 #define GL_HP_image_transform 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
 typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
@@ -6526,8 +7130,8 @@ typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target,
 #ifndef GL_EXT_color_subtable
 #define GL_EXT_color_subtable 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
 typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
@@ -6540,7 +7144,7 @@ typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei s
 #ifndef GL_PGI_misc_hints
 #define GL_PGI_misc_hints 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glHintPGI (GLenum, GLint);
+GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
 #endif
@@ -6548,10 +7152,10 @@ typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
 #ifndef GL_EXT_paletted_texture
 #define GL_EXT_paletted_texture 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, GLvoid *data);
+GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
 typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data);
@@ -6566,12 +7170,12 @@ typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GL
 #ifndef GL_SGIX_list_priority
 #define GL_SGIX_list_priority 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat);
-GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *);
-GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint);
-GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *);
+GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params);
+GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param);
+GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
 typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
@@ -6604,7 +7208,7 @@ typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname
 #ifndef GL_EXT_index_material
 #define GL_EXT_index_material 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum);
+GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
 #endif
@@ -6612,7 +7216,7 @@ typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
 #ifndef GL_EXT_index_func
 #define GL_EXT_index_func 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf);
+GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
 #endif
@@ -6624,7 +7228,7 @@ typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
 #ifndef GL_EXT_compiled_vertex_array
 #define GL_EXT_compiled_vertex_array 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei);
+GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count);
 GLAPI void APIENTRY glUnlockArraysEXT (void);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
@@ -6634,8 +7238,8 @@ typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
 #ifndef GL_EXT_cull_vertex
 #define GL_EXT_cull_vertex 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *);
-GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *);
+GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
 typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
@@ -6648,24 +7252,24 @@ typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *par
 #ifndef GL_SGIX_fragment_lighting
 #define GL_SGIX_fragment_lighting 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum);
-GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat);
-GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *);
-GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint);
-GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *);
-GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint);
+GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode);
+GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param);
+GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param);
+GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params);
+GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param);
+GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params);
+GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
 typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
@@ -6698,7 +7302,7 @@ typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
 #ifndef GL_EXT_draw_range_elements
 #define GL_EXT_draw_range_elements 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
+GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
 #endif
@@ -6714,9 +7318,9 @@ typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint star
 #ifndef GL_EXT_light_texture
 #define GL_EXT_light_texture 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glApplyTextureEXT (GLenum);
-GLAPI void APIENTRY glTextureLightEXT (GLenum);
-GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum);
+GLAPI void APIENTRY glApplyTextureEXT (GLenum mode);
+GLAPI void APIENTRY glTextureLightEXT (GLenum pname);
+GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
 typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
@@ -6734,12 +7338,12 @@ typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
 #ifndef GL_SGIX_async
 #define GL_SGIX_async 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint);
-GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *);
-GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *);
-GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei);
-GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei);
-GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint);
+GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker);
+GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp);
+GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp);
+GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range);
+GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range);
+GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
 typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
@@ -6760,10 +7364,10 @@ typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
 #ifndef GL_INTEL_parallel_arrays
 #define GL_INTEL_parallel_arrays 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *);
-GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *);
-GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *);
-GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *);
+GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer);
+GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const GLvoid* *pointer);
+GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer);
+GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
 typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer);
@@ -6778,10 +7382,10 @@ typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type
 #ifndef GL_EXT_pixel_transform
 #define GL_EXT_pixel_transform 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
 typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
@@ -6804,23 +7408,23 @@ typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, G
 #ifndef GL_EXT_secondary_color
 #define GL_EXT_secondary_color 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte);
-GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *);
-GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *);
-GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *);
-GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint);
-GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *);
-GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *);
-GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte);
-GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *);
-GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *);
-GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort);
-GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *);
-GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue);
+GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v);
+GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue);
+GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v);
+GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue);
+GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v);
+GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue);
+GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v);
+GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue);
+GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v);
+GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue);
+GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v);
+GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue);
+GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v);
+GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue);
+GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v);
+GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
 typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
@@ -6844,7 +7448,7 @@ typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum t
 #ifndef GL_EXT_texture_perturb_normal
 #define GL_EXT_texture_perturb_normal 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureNormalEXT (GLenum);
+GLAPI void APIENTRY glTextureNormalEXT (GLenum mode);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
 #endif
@@ -6852,8 +7456,8 @@ typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
 #ifndef GL_EXT_multi_draw_arrays
 #define GL_EXT_multi_draw_arrays 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);
-GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
+GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
+GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
 typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
@@ -6862,11 +7466,11 @@ typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsiz
 #ifndef GL_EXT_fog_coord
 #define GL_EXT_fog_coord 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogCoordfEXT (GLfloat);
-GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *);
-GLAPI void APIENTRY glFogCoorddEXT (GLdouble);
-GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *);
-GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord);
+GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord);
+GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord);
+GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord);
+GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
 typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
@@ -6882,28 +7486,28 @@ typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei strid
 #ifndef GL_EXT_coordinate_frame
 #define GL_EXT_coordinate_frame 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte);
-GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *);
-GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *);
-GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *);
-GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint);
-GLAPI void APIENTRY glTangent3ivEXT (const GLint *);
-GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glTangent3svEXT (const GLshort *);
-GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte);
-GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *);
-GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *);
-GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *);
-GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint);
-GLAPI void APIENTRY glBinormal3ivEXT (const GLint *);
-GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glBinormal3svEXT (const GLshort *);
-GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz);
+GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v);
+GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz);
+GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v);
+GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz);
+GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v);
+GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz);
+GLAPI void APIENTRY glTangent3ivEXT (const GLint *v);
+GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz);
+GLAPI void APIENTRY glTangent3svEXT (const GLshort *v);
+GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz);
+GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v);
+GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz);
+GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v);
+GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz);
+GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v);
+GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz);
+GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v);
+GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz);
+GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v);
+GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
 typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
@@ -6956,14 +7560,14 @@ typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
 #ifndef GL_SUN_global_alpha
 #define GL_SUN_global_alpha 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte);
-GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort);
-GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint);
-GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat);
-GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble);
-GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte);
-GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort);
-GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint);
+GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor);
+GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor);
+GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor);
+GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor);
+GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor);
+GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor);
+GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor);
+GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
 typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
@@ -6978,13 +7582,13 @@ typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
 #ifndef GL_SUN_triangle_list
 #define GL_SUN_triangle_list 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint);
-GLAPI void APIENTRY glReplacementCodeusSUN (GLushort);
-GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte);
-GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *);
-GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *);
-GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *);
-GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *);
+GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code);
+GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code);
+GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code);
+GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code);
+GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code);
+GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code);
+GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const GLvoid* *pointer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
 typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
@@ -6998,46 +7602,46 @@ typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsize
 #ifndef GL_SUN_vertex
 #define GL_SUN_vertex 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat);
-GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *);
-GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *);
-GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v);
+GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
 typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
@@ -7084,7 +7688,7 @@ typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FV
 #ifndef GL_EXT_blend_func_separate
 #define GL_EXT_blend_func_separate 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
 #endif
@@ -7092,7 +7696,7 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenu
 #ifndef GL_INGR_blend_func_separate
 #define GL_INGR_blend_func_separate 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
 #endif
@@ -7136,9 +7740,9 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLen
 #ifndef GL_EXT_vertex_weighting
 #define GL_EXT_vertex_weighting 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexWeightfEXT (GLfloat);
-GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *);
-GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight);
+GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight);
+GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
 typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
@@ -7153,7 +7757,7 @@ typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum t
 #define GL_NV_vertex_array_range 1
 #ifdef GL_GLEXT_PROTOTYPES
 GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
-GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *);
+GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const GLvoid *pointer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
 typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer);
@@ -7162,19 +7766,19 @@ typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvo
 #ifndef GL_NV_register_combiners
 #define GL_NV_register_combiners 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *);
-GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat);
-GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *);
-GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint);
-GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean);
-GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param);
+GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
 typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
@@ -7218,30 +7822,30 @@ typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
 #ifndef GL_MESA_window_pos
 #define GL_MESA_window_pos 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *);
-GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *);
-GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint);
-GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *);
-GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *);
-GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *);
-GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *);
-GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint);
-GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *);
-GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *);
-GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *);
-GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *);
-GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *);
-GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *);
+GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y);
+GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y);
+GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y);
+GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v);
+GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y);
+GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v);
+GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v);
+GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v);
+GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v);
+GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
 typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
@@ -7276,8 +7880,8 @@ typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
 #ifndef GL_IBM_multimode_draw_arrays
 #define GL_IBM_multimode_draw_arrays 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint);
-GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint);
+GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
+GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
 typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride);
@@ -7286,14 +7890,14 @@ typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode,
 #ifndef GL_IBM_vertex_array_lists
 #define GL_IBM_vertex_array_lists 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint);
-GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
 typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
@@ -7332,7 +7936,7 @@ typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type,
 #ifndef GL_3DFX_tbuffer
 #define GL_3DFX_tbuffer 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTbufferMask3DFX (GLuint);
+GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
 #endif
@@ -7340,8 +7944,8 @@ typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
 #ifndef GL_EXT_multisample
 #define GL_EXT_multisample 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean);
-GLAPI void APIENTRY glSamplePatternEXT (GLenum);
+GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert);
+GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
 typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
@@ -7366,7 +7970,7 @@ typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
 #ifndef GL_SGIS_texture_color_mask
 #define GL_SGIS_texture_color_mask 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean);
+GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
 #endif
@@ -7374,7 +7978,7 @@ typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean
 #ifndef GL_SGIX_igloo_interface
 #define GL_SGIX_igloo_interface 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *);
+GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const GLvoid *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params);
 #endif
@@ -7390,13 +7994,13 @@ typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid
 #ifndef GL_NV_fence
 #define GL_NV_fence 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsFenceNV (GLuint);
-GLAPI GLboolean APIENTRY glTestFenceNV (GLuint);
-GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glFinishFenceNV (GLuint);
-GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum);
+GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
+GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
+GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence);
+GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence);
+GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
+GLAPI void APIENTRY glFinishFenceNV (GLuint fence);
+GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
 typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
@@ -7410,15 +8014,15 @@ typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
 #ifndef GL_NV_evaluators
 #define GL_NV_evaluators 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *);
-GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *);
-GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum);
+GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
+GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points);
+GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
 typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
@@ -7438,8 +8042,8 @@ typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
 #ifndef GL_NV_register_combiners2
 #define GL_NV_register_combiners2 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
 typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
@@ -7468,70 +8072,70 @@ typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, G
 #ifndef GL_NV_vertex_program
 #define GL_NV_vertex_program 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *);
-GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *);
-GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *);
-GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *);
-GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *);
-GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *);
-GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *);
-GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *);
-GLAPI GLboolean APIENTRY glIsProgramNV (GLuint);
-GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *);
-GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *);
-GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *);
-GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *);
-GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *);
-GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *);
-GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum);
-GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble);
-GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat);
-GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort);
-GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
-GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *);
-GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *);
-GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *);
-GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *);
-GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *);
-GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *);
-GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *);
-GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *);
-GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *);
+GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences);
+GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id);
+GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs);
+GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params);
+GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs);
+GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program);
+GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, GLvoid* *pointer);
+GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id);
+GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
+GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLuint count, const GLdouble *v);
+GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLuint count, const GLfloat *v);
+GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs);
+GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform);
+GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x);
+GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x);
+GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
 typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
@@ -7626,10 +8230,10 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei cou
 #ifndef GL_ATI_envmap_bumpmap
 #define GL_ATI_envmap_bumpmap 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *);
-GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *);
+GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param);
+GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param);
+GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param);
+GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
 typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
@@ -7640,20 +8244,20 @@ typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloa
 #ifndef GL_ATI_fragment_shader
 #define GL_ATI_fragment_shader 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint);
-GLAPI void APIENTRY glBindFragmentShaderATI (GLuint);
-GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint);
+GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range);
+GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id);
+GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id);
 GLAPI void APIENTRY glBeginFragmentShaderATI (void);
 GLAPI void APIENTRY glEndFragmentShaderATI (void);
-GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum);
-GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum);
-GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *);
+GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle);
+GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle);
+GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
 typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
@@ -7674,8 +8278,8 @@ typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, cons
 #ifndef GL_ATI_pn_triangles
 #define GL_ATI_pn_triangles 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint);
-GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat);
+GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param);
+GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
 typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
@@ -7684,18 +8288,18 @@ typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
 #ifndef GL_ATI_vertex_array_object
 #define GL_ATI_vertex_array_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum);
-GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint);
-GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum);
-GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glFreeObjectBufferATI (GLuint);
-GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint);
-GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint);
-GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *);
+GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const GLvoid *pointer, GLenum usage);
+GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer);
+GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve);
+GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer);
+GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params);
+GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage);
 typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
@@ -7716,46 +8320,46 @@ typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum
 #ifdef GL_GLEXT_PROTOTYPES
 GLAPI void APIENTRY glBeginVertexShaderEXT (void);
 GLAPI void APIENTRY glEndVertexShaderEXT (void);
-GLAPI void APIENTRY glBindVertexShaderEXT (GLuint);
-GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint);
-GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint);
-GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint);
-GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint);
-GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const GLvoid *);
-GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *);
-GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *);
-GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *);
-GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *);
-GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *);
-GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *);
-GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint);
-GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint);
-GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum);
-GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum);
-GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum);
-GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum);
-GLAPI GLuint APIENTRY glBindParameterEXT (GLenum);
-GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum);
-GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *);
-GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *);
-GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *);
-GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *);
-GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id);
+GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range);
+GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id);
+GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1);
+GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num);
+GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num);
+GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
+GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const GLvoid *addr);
+GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const GLvoid *addr);
+GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr);
+GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr);
+GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr);
+GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr);
+GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr);
+GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr);
+GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr);
+GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr);
+GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const GLvoid *addr);
+GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id);
+GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id);
+GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value);
+GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value);
+GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value);
+GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value);
+GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value);
+GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap);
+GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
+GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data);
+GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
+GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, GLvoid* *data);
+GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
+GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data);
+GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
+GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
+GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data);
+GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
 typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
@@ -7804,51 +8408,51 @@ typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum v
 #ifndef GL_ATI_vertex_streams
 #define GL_ATI_vertex_streams 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort);
-GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *);
-GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint);
-GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat);
-GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble);
-GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *);
-GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort);
-GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *);
-GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint);
-GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *);
-GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *);
-GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *);
-GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *);
-GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *);
-GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte);
-GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *);
-GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *);
-GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint);
-GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *);
-GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum);
-GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint);
-GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat);
+GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x);
+GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x);
+GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x);
+GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x);
+GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y);
+GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
+GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords);
+GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
+GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz);
+GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
+GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
+GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream);
+GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param);
+GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
 typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
@@ -7900,9 +8504,9 @@ typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat para
 #ifndef GL_ATI_element_array
 #define GL_ATI_element_array 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *);
-GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei);
-GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei);
+GLAPI void APIENTRY glElementPointerATI (GLenum type, const GLvoid *pointer);
+GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count);
+GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer);
 typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
@@ -7912,7 +8516,7 @@ typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint
 #ifndef GL_SUN_mesh_array
 #define GL_SUN_mesh_array 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
 #endif
@@ -7932,13 +8536,13 @@ typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, G
 #ifndef GL_NV_occlusion_query
 #define GL_NV_occlusion_query 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *);
-GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *);
-GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint);
-GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint);
+GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids);
+GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id);
+GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id);
 GLAPI void APIENTRY glEndOcclusionQueryNV (void);
-GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *);
+GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
 typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
@@ -7952,8 +8556,8 @@ typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pnam
 #ifndef GL_NV_point_sprite
 #define GL_NV_point_sprite 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint);
-GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *);
+GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param);
+GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
 typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
@@ -7974,7 +8578,7 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint
 #ifndef GL_EXT_stencil_two_side
 #define GL_EXT_stencil_two_side 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum);
+GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
 #endif
@@ -7990,11 +8594,11 @@ typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
 #ifndef GL_APPLE_element_array
 #define GL_APPLE_element_array 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glElementPointerAPPLE (GLenum, const GLvoid *);
-GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum, GLint, GLsizei);
-GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei);
-GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei);
-GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei);
+GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const GLvoid *pointer);
+GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count);
+GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
+GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
+GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer);
 typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
@@ -8006,14 +8610,14 @@ typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode,
 #ifndef GL_APPLE_fence
 #define GL_APPLE_fence 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenFencesAPPLE (GLsizei, GLuint *);
-GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei, const GLuint *);
-GLAPI void APIENTRY glSetFenceAPPLE (GLuint);
-GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint);
-GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint);
-GLAPI void APIENTRY glFinishFenceAPPLE (GLuint);
-GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum, GLuint);
-GLAPI void APIENTRY glFinishObjectAPPLE (GLenum, GLint);
+GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences);
+GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences);
+GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence);
+GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence);
+GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence);
+GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence);
+GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name);
+GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
 typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
@@ -8028,10 +8632,10 @@ typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
 #ifndef GL_APPLE_vertex_array_object
 #define GL_APPLE_vertex_array_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint);
-GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint);
+GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array);
+GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays);
+GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays);
+GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
 typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
@@ -8042,9 +8646,9 @@ typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
 #ifndef GL_APPLE_vertex_array_range
 #define GL_APPLE_vertex_array_range 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei, GLvoid *);
-GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *);
-GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum, GLint);
+GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, GLvoid *pointer);
+GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, GLvoid *pointer);
+GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
 typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
@@ -8062,7 +8666,7 @@ typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLin
 #ifndef GL_ATI_draw_buffers
 #define GL_ATI_draw_buffers 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawBuffersATI (GLsizei, const GLenum *);
+GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
 #endif
@@ -8090,12 +8694,12 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs)
 #define GL_NV_fragment_program 1
 /* Some NV_fragment_program entry points are shared with ARB_vertex_program. */
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *);
-GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *);
-GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *);
-GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *);
+GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
+GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
+GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
+GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
 typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
@@ -8108,52 +8712,52 @@ typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsiz
 #ifndef GL_NV_half_float
 #define GL_NV_half_float 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertex2hNV (GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV);
-GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum, GLhalfNV);
-GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum, const GLhalfNV *);
-GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum, const GLhalfNV *);
-GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum, const GLhalfNV *);
-GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum, const GLhalfNV *);
-GLAPI void APIENTRY glFogCoordhNV (GLhalfNV);
-GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *);
-GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV);
-GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttrib1hNV (GLuint, GLhalfNV);
-GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *);
+GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);
+GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z);
+GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
+GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
+GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s);
+GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t);
+GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r);
+GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s);
+GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t);
+GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
+GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);
+GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);
+GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);
+GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);
+GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);
+GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);
+GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
+GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
 typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
@@ -8206,8 +8810,8 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, c
 #ifndef GL_NV_pixel_data_range
 #define GL_NV_pixel_data_range 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelDataRangeNV (GLenum, GLsizei, GLvoid *);
-GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum);
+GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, GLvoid *pointer);
+GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer);
 typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
@@ -8217,7 +8821,7 @@ typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
 #define GL_NV_primitive_restart 1
 #ifdef GL_GLEXT_PROTOTYPES
 GLAPI void APIENTRY glPrimitiveRestartNV (void);
-GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint);
+GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
 typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
@@ -8234,8 +8838,8 @@ typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
 #ifndef GL_ATI_map_object_buffer
 #define GL_ATI_map_object_buffer 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint);
-GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint);
+GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint buffer);
+GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
 typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
@@ -8244,8 +8848,8 @@ typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
 #ifndef GL_ATI_separate_stencil
 #define GL_ATI_separate_stencil 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint);
+GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
 typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
@@ -8254,9 +8858,9 @@ typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLen
 #ifndef GL_ATI_vertex_attrib_array_object
 #define GL_ATI_vertex_attrib_array_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint);
-GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
+GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
 typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
@@ -8270,7 +8874,7 @@ typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index,
 #ifndef GL_EXT_depth_bounds_test
 #define GL_EXT_depth_bounds_test 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDepthBoundsEXT (GLclampd, GLclampd);
+GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
 #endif
@@ -8282,7 +8886,7 @@ typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
 #ifndef GL_EXT_blend_equation_separate
 #define GL_EXT_blend_equation_separate 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum, GLenum);
+GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
 #endif
@@ -8318,23 +8922,23 @@ typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLen
 #ifndef GL_EXT_framebuffer_object
 #define GL_EXT_framebuffer_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint);
-GLAPI void APIENTRY glBindRenderbufferEXT (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei, GLuint *);
-GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum, GLenum, GLint *);
-GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint);
-GLAPI void APIENTRY glBindFramebufferEXT (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *);
-GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum);
-GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGenerateMipmapEXT (GLenum);
+GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer);
+GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers);
+GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
+GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer);
+GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer);
+GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers);
+GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);
+GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target);
+GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
 typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
@@ -8358,7 +8962,7 @@ typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
 #ifndef GL_GREMEDY_string_marker
 #define GL_GREMEDY_string_marker 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei, const GLvoid *);
+GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const GLvoid *string);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string);
 #endif
@@ -8370,7 +8974,7 @@ typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid
 #ifndef GL_EXT_stencil_clear_tag
 #define GL_EXT_stencil_clear_tag 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilClearTagEXT (GLsizei, GLuint);
+GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
 #endif
@@ -8382,7 +8986,7 @@ typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GL
 #ifndef GL_EXT_framebuffer_blit
 #define GL_EXT_framebuffer_blit 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlitFramebufferEXT (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
+GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
 #endif
@@ -8390,7 +8994,7 @@ typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0,
 #ifndef GL_EXT_framebuffer_multisample
 #define GL_EXT_framebuffer_multisample 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
+GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
 #endif
@@ -8402,8 +9006,8 @@ typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum targ
 #ifndef GL_EXT_timer_query
 #define GL_EXT_timer_query 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint, GLenum, GLint64EXT *);
-GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint, GLenum, GLuint64EXT *);
+GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64EXT *params);
+GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64EXT *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params);
 typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params);
@@ -8412,8 +9016,8 @@ typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pnam
 #ifndef GL_EXT_gpu_program_parameters
 #define GL_EXT_gpu_program_parameters 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
 typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
@@ -8422,8 +9026,8 @@ typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, G
 #ifndef GL_APPLE_flush_buffer_range
 #define GL_APPLE_flush_buffer_range 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum, GLintptr, GLsizeiptr);
+GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
 typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
@@ -8432,22 +9036,22 @@ typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GL
 #ifndef GL_NV_gpu_program4
 #define GL_NV_gpu_program4 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum, GLuint, const GLint *);
-GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum, GLuint, const GLuint *);
-GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum, GLuint, const GLint *);
-GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum, GLuint, const GLuint *);
-GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum, GLuint, GLint *);
-GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum, GLuint, GLuint *);
-GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum, GLuint, GLint *);
-GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum, GLuint, GLuint *);
+GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
+GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
+GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
+GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
+GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params);
+GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params);
+GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params);
+GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
 typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
@@ -8470,10 +9074,10 @@ typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, G
 #ifndef GL_NV_geometry_program4
 #define GL_NV_geometry_program4 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramVertexLimitNV (GLenum, GLint);
-GLAPI void APIENTRY glFramebufferTextureEXT (GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum, GLenum, GLuint, GLint, GLenum);
+GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit);
+GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
@@ -8484,7 +9088,7 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLen
 #ifndef GL_EXT_geometry_shader4
 #define GL_EXT_geometry_shader4 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriEXT (GLuint, GLenum, GLint);
+GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
 #endif
@@ -8492,29 +9096,29 @@ typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum p
 #ifndef GL_NV_vertex_program4
 #define GL_NV_vertex_program4 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint, GLint);
-GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint, const GLushort *);
-GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint, GLenum, GLuint *);
+GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x);
+GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y);
+GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x);
+GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y);
+GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z);
+GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
 typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
@@ -8544,17 +9148,17 @@ typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum p
 #ifndef GL_EXT_gpu_shader4
 #define GL_EXT_gpu_shader4 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetUniformuivEXT (GLuint, GLint, GLuint *);
-GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint, GLuint, const GLchar *);
-GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint, const GLchar *);
-GLAPI void APIENTRY glUniform1uiEXT (GLint, GLuint);
-GLAPI void APIENTRY glUniform2uiEXT (GLint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform3uiEXT (GLint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform4uiEXT (GLint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform1uivEXT (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform2uivEXT (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform3uivEXT (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform4uivEXT (GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params);
+GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0);
+GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
 typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
@@ -8572,8 +9176,8 @@ typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count,
 #ifndef GL_EXT_draw_instanced
 #define GL_EXT_draw_instanced 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
+GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
 typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
@@ -8590,7 +9194,7 @@ typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei
 #ifndef GL_EXT_texture_buffer_object
 #define GL_EXT_texture_buffer_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferEXT (GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
 #endif
@@ -8610,9 +9214,9 @@ typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalfo
 #ifndef GL_NV_depth_buffer_float
 #define GL_NV_depth_buffer_float 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDepthRangedNV (GLdouble, GLdouble);
-GLAPI void APIENTRY glClearDepthdNV (GLdouble);
-GLAPI void APIENTRY glDepthBoundsdNV (GLdouble, GLdouble);
+GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glClearDepthdNV (GLdouble depth);
+GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
 typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
@@ -8626,7 +9230,7 @@ typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
 #ifndef GL_NV_framebuffer_multisample_coverage
 #define GL_NV_framebuffer_multisample_coverage 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
+GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
 #endif
@@ -8642,9 +9246,9 @@ typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLen
 #ifndef GL_NV_parameter_buffer_object
 #define GL_NV_parameter_buffer_object 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum, GLuint, GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum, GLuint, GLuint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum, GLuint, GLuint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
+GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
 typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
@@ -8654,12 +9258,12 @@ typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target,
 #ifndef GL_EXT_draw_buffers2
 #define GL_EXT_draw_buffers2 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
-GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum, GLuint, GLboolean *);
-GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum, GLuint, GLint *);
-GLAPI void APIENTRY glEnableIndexedEXT (GLenum, GLuint);
-GLAPI void APIENTRY glDisableIndexedEXT (GLenum, GLuint);
-GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum, GLuint);
+GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);
+GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);
+GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);
+GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);
+GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
 typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
@@ -8672,17 +9276,17 @@ typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuin
 #ifndef GL_NV_transform_feedback
 #define GL_NV_transform_feedback 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum);
+GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode);
 GLAPI void APIENTRY glEndTransformFeedbackNV (void);
-GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint, const GLint *, GLenum);
-GLAPI void APIENTRY glBindBufferRangeNV (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
-GLAPI void APIENTRY glBindBufferOffsetNV (GLenum, GLuint, GLuint, GLintptr);
-GLAPI void APIENTRY glBindBufferBaseNV (GLenum, GLuint, GLuint);
-GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint, GLsizei, const GLchar* *, GLenum);
-GLAPI void APIENTRY glActiveVaryingNV (GLuint, const GLchar *);
-GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint, const GLchar *);
-GLAPI void APIENTRY glGetActiveVaryingNV (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
-GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint, GLuint, GLint *);
+GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode);
+GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name);
+GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
 typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
@@ -8700,9 +9304,9 @@ typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program,
 #ifndef GL_EXT_bindable_uniform
 #define GL_EXT_bindable_uniform 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformBufferEXT (GLuint, GLint, GLuint);
-GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint, GLint);
-GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint, GLint);
+GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer);
+GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location);
+GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
 typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
@@ -8712,12 +9316,12 @@ typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint
 #ifndef GL_EXT_texture_integer
 #define GL_EXT_texture_integer 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexParameterIivEXT (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glTexParameterIuivEXT (GLenum, GLenum, const GLuint *);
-GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum, GLenum, GLuint *);
-GLAPI void APIENTRY glClearColorIiEXT (GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glClearColorIuiEXT (GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha);
+GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
 typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
@@ -8738,7 +9342,7 @@ typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);
 #ifndef GL_NV_conditional_render
 #define GL_NV_conditional_render 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint, GLenum);
+GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
 GLAPI void APIENTRY glEndConditionalRenderNV (void);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
@@ -8748,12 +9352,12 @@ typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
 #ifndef GL_NV_present_video
 #define GL_NV_present_video 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint, GLuint64EXT, GLuint, GLuint, GLenum, GLenum, GLuint, GLuint, GLenum, GLuint, GLuint);
-GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint, GLuint64EXT, GLuint, GLuint, GLenum, GLenum, GLuint, GLenum, GLuint, GLenum, GLuint, GLenum, GLuint);
-GLAPI void APIENTRY glGetVideoivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVideouivNV (GLuint, GLenum, GLuint *);
-GLAPI void APIENTRY glGetVideoi64vNV (GLuint, GLenum, GLint64EXT *);
-GLAPI void APIENTRY glGetVideoui64vNV (GLuint, GLenum, GLuint64EXT *);
+GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
+GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
+GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params);
+GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
 typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
@@ -8766,13 +9370,13 @@ typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pna
 #ifndef GL_EXT_transform_feedback
 #define GL_EXT_transform_feedback 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum);
+GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode);
 GLAPI void APIENTRY glEndTransformFeedbackEXT (void);
-GLAPI void APIENTRY glBindBufferRangeEXT (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
-GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum, GLuint, GLuint, GLintptr);
-GLAPI void APIENTRY glBindBufferBaseEXT (GLenum, GLuint, GLuint);
-GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint, GLsizei, const GLchar* *, GLenum);
-GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
+GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
 typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
@@ -8786,192 +9390,192 @@ typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program
 #ifndef GL_EXT_direct_state_access
 #define GL_EXT_direct_state_access 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield);
-GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield);
-GLAPI void APIENTRY glMatrixLoadfEXT (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMatrixLoaddEXT (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMatrixMultfEXT (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMatrixMultdEXT (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum);
-GLAPI void APIENTRY glMatrixRotatefEXT (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMatrixRotatedEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMatrixScalefEXT (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMatrixScaledEXT (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMatrixFrustumEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMatrixOrthoEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMatrixPopEXT (GLenum);
-GLAPI void APIENTRY glMatrixPushEXT (GLenum);
-GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum, const GLdouble *);
-GLAPI void APIENTRY glTextureParameterfEXT (GLuint, GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glTextureParameterfvEXT (GLuint, GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glTextureParameteriEXT (GLuint, GLenum, GLenum, GLint);
-GLAPI void APIENTRY glTextureParameterivEXT (GLuint, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetTextureImageEXT (GLuint, GLenum, GLint, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint, GLenum, GLint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint, GLenum, GLint, GLenum, GLint *);
-GLAPI void APIENTRY glTextureImage3DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum, GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum, GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum, GLenum, GLenum, GLint);
-GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum, GLenum, GLint, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum, GLenum, GLint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum, GLenum, GLint, GLenum, GLint *);
-GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glBindMultiTextureEXT (GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum, GLuint);
-GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum, GLuint);
-GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum, GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum, GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum, GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexEnviEXT (GLenum, GLenum, GLenum, GLint);
-GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexGendEXT (GLenum, GLenum, GLenum, GLdouble);
-GLAPI void APIENTRY glMultiTexGendvEXT (GLenum, GLenum, GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexGenfEXT (GLenum, GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum, GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexGeniEXT (GLenum, GLenum, GLenum, GLint);
-GLAPI void APIENTRY glMultiTexGenivEXT (GLenum, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum, GLenum, GLenum, GLdouble *);
-GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum, GLuint, GLdouble *);
-GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum, GLuint, GLvoid* *);
-GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint, GLenum, GLint, GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum, GLenum, GLint, GLvoid *);
-GLAPI void APIENTRY glNamedProgramStringEXT (GLuint, GLenum, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint, GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint, GLenum, GLuint, const GLdouble *);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint, GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint, GLenum, GLuint, const GLfloat *);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint, GLenum, GLuint, GLdouble *);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint, GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint, GLenum, GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint, GLenum, GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint, GLenum, GLuint, const GLint *);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint, GLenum, GLuint, GLsizei, const GLint *);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint, GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint, GLenum, GLuint, const GLuint *);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint, GLenum, GLuint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint, GLenum, GLuint, GLint *);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint, GLenum, GLuint, GLuint *);
-GLAPI void APIENTRY glTextureParameterIivEXT (GLuint, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint, GLenum, GLenum, const GLuint *);
-GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint, GLenum, GLenum, GLuint *);
-GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum, GLenum, GLenum, const GLuint *);
-GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum, GLenum, GLenum, GLuint *);
-GLAPI void APIENTRY glProgramUniform1fEXT (GLuint, GLint, GLfloat);
-GLAPI void APIENTRY glProgramUniform2fEXT (GLuint, GLint, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramUniform3fEXT (GLuint, GLint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramUniform4fEXT (GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramUniform1iEXT (GLuint, GLint, GLint);
-GLAPI void APIENTRY glProgramUniform2iEXT (GLuint, GLint, GLint, GLint);
-GLAPI void APIENTRY glProgramUniform3iEXT (GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glProgramUniform4iEXT (GLuint, GLint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint, GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint, GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint, GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint, GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint, GLint, GLuint);
-GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint, GLint, GLuint, GLuint);
-GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint, GLint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint, GLint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint, GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint, GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint, GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint, GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glNamedBufferDataEXT (GLuint, GLsizeiptr, const GLvoid *, GLenum);
-GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint, GLintptr, GLsizeiptr, const GLvoid *);
-GLAPI GLvoid* APIENTRY glMapNamedBufferEXT (GLuint, GLenum);
-GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint);
-GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint, GLenum, GLvoid* *);
-GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint, GLintptr, GLsizeiptr, GLvoid *);
-GLAPI void APIENTRY glTextureBufferEXT (GLuint, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glMultiTexBufferEXT (GLenum, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint, GLenum, GLint *);
-GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint, GLenum);
-GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint, GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint, GLenum);
-GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum, GLenum);
-GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint, GLenum);
-GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint, GLsizei, const GLenum *);
-GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint, GLenum);
-GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint, GLsizei, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint, GLenum, GLuint, GLint, GLenum);
-GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint, GLenum, GLuint);
-GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);
+GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);
+GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glMatrixPopEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixPushEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);
+GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);
+GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);
+GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
+GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);
+GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);
+GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, GLvoid* *data);
+GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, GLvoid *img);
+GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, GLvoid *img);
+GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);
+GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, GLvoid *string);
+GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);
+GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);
+GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);
+GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
+GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
+GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
+GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage);
+GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+GLAPI GLvoid* APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);
+GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, GLvoid* *params);
+GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data);
+GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);
+GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);
+GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);
+GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);
+GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);
+GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);
+GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);
+GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
 typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
@@ -9172,9 +9776,9 @@ typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenu
 #ifndef GL_NV_explicit_multisample
 #define GL_NV_explicit_multisample 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetMultisamplefvNV (GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint, GLbitfield);
-GLAPI void APIENTRY glTexRenderbufferNV (GLenum, GLuint);
+GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val);
+GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask);
+GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val);
 typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);
@@ -9184,13 +9788,13 @@ typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint rende
 #ifndef GL_NV_transform_feedback2
 #define GL_NV_transform_feedback2 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint);
+GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id);
+GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids);
+GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids);
+GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id);
 GLAPI void APIENTRY glPauseTransformFeedbackNV (void);
 GLAPI void APIENTRY glResumeTransformFeedbackNV (void);
-GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum, GLuint);
+GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);
 typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids);
@@ -9208,17 +9812,17 @@ typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint i
 #ifndef GL_AMD_performance_monitor
 #define GL_AMD_performance_monitor 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *, GLsizei, GLuint *);
-GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint, GLint *, GLint *, GLsizei, GLuint *);
-GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint, GLuint, GLenum, void *);
-GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei, GLuint *);
-GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei, GLuint *);
-GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint, GLboolean, GLuint, GLint, GLuint *);
-GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint);
-GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint);
-GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint, GLenum, GLsizei, GLuint *, GLint *);
+GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
+GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
+GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
+GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
+GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);
+GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
+GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
+GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
+GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
+GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);
+GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
 typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
@@ -9240,8 +9844,8 @@ typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor,
 #ifndef GL_AMD_vertex_shader_tesselator
 #define GL_AMD_vertex_shader_tesselator 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTessellationFactorAMD (GLfloat);
-GLAPI void APIENTRY glTessellationModeAMD (GLenum);
+GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor);
+GLAPI void APIENTRY glTessellationModeAMD (GLenum mode);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
 typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
@@ -9250,7 +9854,7 @@ typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
 #ifndef GL_EXT_provoking_vertex
 #define GL_EXT_provoking_vertex 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProvokingVertexEXT (GLenum);
+GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
 #endif
@@ -9262,10 +9866,10 @@ typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
 #ifndef GL_AMD_draw_buffers_blend
 #define GL_AMD_draw_buffers_blend 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint, GLenum, GLenum);
-GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint, GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint, GLenum);
-GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint, GLenum, GLenum);
+GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst);
+GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode);
+GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);
 typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
@@ -9276,8 +9880,8 @@ typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, G
 #ifndef GL_APPLE_texture_range
 #define GL_APPLE_texture_range 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureRangeAPPLE (GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum, GLenum, GLvoid* *);
+GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const GLvoid *pointer);
+GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, GLvoid* *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const GLvoid *pointer);
 typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid* *params);
@@ -9290,13 +9894,13 @@ typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, G
 #ifndef GL_APPLE_vertex_program_evaluators
 #define GL_APPLE_vertex_program_evaluators 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint, GLenum);
-GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint, GLenum);
-GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint, GLenum);
-GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint, GLuint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
-GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint, GLuint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
-GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint, GLuint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
-GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint, GLuint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
+GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname);
+GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname);
+GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname);
+GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
+GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
+GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
+GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
 typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
@@ -9314,9 +9918,9 @@ typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint s
 #ifndef GL_APPLE_object_purgeable
 #define GL_APPLE_object_purgeable 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum, GLuint, GLenum);
-GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum, GLuint, GLenum);
-GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum, GLuint, GLenum, GLint *);
+GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
+GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
+GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
 typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
@@ -9334,18 +9938,18 @@ typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType,
 #ifndef GL_NV_video_capture
 #define GL_NV_video_capture 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint);
-GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint, GLuint, GLenum, GLintptrARB);
-GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint, GLuint, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glEndVideoCaptureNV (GLuint);
-GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint, GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint, GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint, GLuint, GLenum, GLdouble *);
-GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint, GLuint *, GLuint64EXT *);
-GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint, GLuint, GLenum, const GLint *);
-GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint, GLuint, GLenum, const GLfloat *);
-GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint, GLuint, GLenum, const GLdouble *);
+GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot);
+GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
+GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
+GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot);
+GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
+GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
+GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
 typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
@@ -9364,7 +9968,7 @@ typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_
 #ifndef GL_NV_copy_image
 #define GL_NV_copy_image 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyImageSubDataNV (GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei);
+GLAPI void APIENTRY glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
 #endif
@@ -9372,9 +9976,9 @@ typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum src
 #ifndef GL_EXT_separate_shader_objects
 #define GL_EXT_separate_shader_objects 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUseShaderProgramEXT (GLenum, GLuint);
-GLAPI void APIENTRY glActiveProgramEXT (GLuint);
-GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum, const GLchar *);
+GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);
+GLAPI void APIENTRY glActiveProgramEXT (GLuint program);
+GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
 typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
@@ -9388,26 +9992,26 @@ typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const G
 #ifndef GL_NV_shader_buffer_load
 #define GL_NV_shader_buffer_load 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMakeBufferResidentNV (GLenum, GLenum);
-GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum);
-GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum);
-GLAPI void APIENTRY glNamedMakeBufferResidentNV (GLuint, GLenum);
-GLAPI void APIENTRY glNamedMakeBufferNonResidentNV (GLuint);
-GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint);
-GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum, GLenum, GLuint64EXT *);
-GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint, GLenum, GLuint64EXT *);
-GLAPI void APIENTRY glGetIntegerui64vNV (GLenum, GLuint64EXT *);
-GLAPI void APIENTRY glUniformui64NV (GLint, GLuint64EXT);
-GLAPI void APIENTRY glUniformui64vNV (GLint, GLsizei, const GLuint64EXT *);
-GLAPI void APIENTRY glGetUniformui64vNV (GLuint, GLint, GLuint64EXT *);
-GLAPI void APIENTRY glProgramUniformui64NV (GLuint, GLint, GLuint64EXT);
-GLAPI void APIENTRY glProgramUniformui64vNV (GLuint, GLint, GLsizei, const GLuint64EXT *);
+GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);
+GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);
+GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);
+GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);
+GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);
+GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);
+GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);
+GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);
+GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);
+GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);
+GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);
+GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);
+GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
 typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
 typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLNAMEDMAKEBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
-typedef void (APIENTRYP PFNGLNAMEDMAKEBUFFERNONRESIDENTNVPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
+typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
 typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
 typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);
 typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);
@@ -9422,18 +10026,18 @@ typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint l
 #ifndef GL_NV_vertex_buffer_unified_memory
 #define GL_NV_vertex_buffer_unified_memory 1
 #ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferAddressRangeNV (GLenum, GLuint, GLuint64EXT, GLsizeiptr);
-GLAPI void APIENTRY glVertexFormatNV (GLint, GLenum, GLsizei);
-GLAPI void APIENTRY glNormalFormatNV (GLenum, GLsizei);
-GLAPI void APIENTRY glColorFormatNV (GLint, GLenum, GLsizei);
-GLAPI void APIENTRY glIndexFormatNV (GLenum, GLsizei);
-GLAPI void APIENTRY glTexCoordFormatNV (GLint, GLenum, GLsizei);
-GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei);
-GLAPI void APIENTRY glSecondaryColorFormatNV (GLint, GLenum, GLsizei);
-GLAPI void APIENTRY glFogCoordFormatNV (GLenum, GLsizei);
-GLAPI void APIENTRY glVertexAttribFormatNV (GLuint, GLint, GLenum, GLboolean, GLsizei);
-GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint, GLint, GLenum, GLsizei);
-GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum, GLuint, GLuint64EXT *);
+GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
+GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);
+GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
+GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);
 #endif /* GL_GLEXT_PROTOTYPES */
 typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
 typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
@@ -9457,6 +10061,18 @@ GLAPI void APIENTRY glTextureBarrierNV (void);
 typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);
 #endif
 
+#ifndef GL_AMD_shader_stencil_export
+#define GL_AMD_shader_stencil_export 1
+#endif
+
+#ifndef GL_AMD_seamless_cubemap_per_texture
+#define GL_AMD_seamless_cubemap_per_texture 1
+#endif
+
+#ifndef GL_AMD_conservative_depth
+#define GL_AMD_conservative_depth 1
+#endif
+
 
 #ifdef __cplusplus
 }
index 44224308f5ea102adad664e8577ffae581adf86c..407d4f966eb9903f1ad675265602de9679215e28 100644 (file)
@@ -124,6 +124,10 @@ extern "C" {
 #define GLX_SAMPLES_ARB                    100001
 #endif
 
+#ifndef GLX_ARB_vertex_buffer_object
+#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095
+#endif
+
 #ifndef GLX_ARB_fbconfig_float
 #define GLX_RGBA_FLOAT_TYPE_ARB            0x20B9
 #define GLX_RGBA_FLOAT_BIT_ARB             0x00000004
index 4b9264166f9b331b0d365468c25f70f86fe6d895..172669e39554ac7364a03d00778d4e9a730d539d 100644 (file)
@@ -824,4 +824,18 @@ struct __DRIimageLookupExtensionRec {
                                  void *loaderPrivate);
 };
 
+/**
+ * This extension allows for common DRI2 options
+ */
+#define __DRI2_CONFIG_QUERY "DRI_CONFIG_QUERY"
+#define __DRI2_CONFIG_QUERY_VERSION 1
+
+typedef struct __DRI2configQueryExtensionRec __DRI2configQueryExtension;
+struct __DRI2configQueryExtensionRec {
+   __DRIextension base;
+
+   int (*configQueryb)(__DRIscreen *screen, const char *var, GLboolean *val);
+   int (*configQueryi)(__DRIscreen *screen, const char *var, GLint *val);
+   int (*configQueryf)(__DRIscreen *screen, const char *var, GLfloat *val);
+};
 #endif
index 265d90cd95f10fea85c1a6d658f9264c3653247f..60fc4146c80667a1daf5a503882bd0c6f6de5e24 100644 (file)
@@ -158,7 +158,7 @@ static void printhelp(void)
   glRasterPos2i(60,240);
   printstring(GLUT_BITMAP_TIMES_ROMAN_24,"l - Increase rain length");
   glRasterPos2i(60,210);
-  printstring(GLUT_BITMAP_TIMES_ROMAN_24,"k - Increase rain length");
+  printstring(GLUT_BITMAP_TIMES_ROMAN_24,"k - Decrease rain length");
 }
 
 static void drawrain(void)
index 1415ef1c43cfb5b05b4e85d0b28a5190e45c4986..b668995aac1443e539af62907e5dbc7cf85b576b 100644 (file)
@@ -6,11 +6,13 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
+#include <GL/glew.h>
 #include <GL/glut.h>
 #include "readtex.h"
 
 #define TEST_CLAMP 0
 #define TEST_MIPMAPS 0
+#define TEST_GEN_COMPRESSED_MIPMAPS 0
 
 #define MAX_TEXTURES 8
 
@@ -304,6 +306,69 @@ LoadTextures(GLuint n, const char *files[])
                          GL_RGBA, GL_UNSIGNED_BYTE, image);
          }
       }
+#elif TEST_GEN_COMPRESSED_MIPMAPS
+      {
+         GLenum intFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
+         int f;
+         GLenum format;
+         GLubyte *img = LoadRGBImage(files[i], &w, &h, &format);
+         GLboolean write_compressed = GL_FALSE;
+         GLboolean read_compressed = GL_FALSE;
+
+         glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
+         glTexImage2D(GL_TEXTURE_2D, 0, intFormat, w, h, 0,
+                      format, GL_UNSIGNED_BYTE, img);
+         glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_FALSE);
+         free(img);
+
+         glGetTexLevelParameteriv(GL_TEXTURE_2D, i,
+                                  GL_TEXTURE_INTERNAL_FORMAT, &f);
+         printf("actual internal format 0x%x\n", f);
+
+         if (write_compressed) {
+            GLint i, sz, w, h;
+            int num_levels = 8;
+            for (i = 0; i < num_levels; i++) {
+               char name[20], *buf;
+               FILE *f;
+               glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w);
+               glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h);
+               glGetTexLevelParameteriv(GL_TEXTURE_2D, i,
+                                        GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &sz);
+               printf("Writing level %d: %d x %d  bytes: %d\n", i, w, h, sz);
+               buf = malloc(sz);
+               glGetCompressedTexImageARB(GL_TEXTURE_2D, i, buf);
+               sprintf(name, "comp%d", i);
+               f = fopen(name, "w");
+               fwrite(buf, 1, sz, f);
+               fclose(f);
+               free(buf);
+            }
+         }
+
+         if (read_compressed) {
+            GLint i, sz, w, h;
+            int num_levels = 8;
+            for (i = 01; i < num_levels; i++) {
+               char name[20], *buf;
+               FILE *f;
+               glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w);
+               glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h);
+               glGetTexLevelParameteriv(GL_TEXTURE_2D, i,
+                                        GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &sz);
+               buf = malloc(sz);
+               sprintf(name, "comp%d", i);
+               printf("Reading level %d: %d x %d  bytes: %d from %s\n",
+                      i, w, h, sz, name);
+               f = fopen(name, "r");
+               fread(buf, 1, sz, f);
+               fclose(f);
+               glCompressedTexImage2DARB(GL_TEXTURE_2D, i, intFormat,
+                                         w, h, 0, sz, buf);
+               free(buf);
+            }
+         }
+      }
 #else
       if (!LoadRGBMipmaps2(files[i], GL_TEXTURE_2D, GL_RGB, &w, &h)) {
          printf("Error: couldn't load %s\n", files[i]);
@@ -360,6 +425,7 @@ main(int argc, char *argv[])
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    Win = glutCreateWindow(argv[0]);
+   glewInit();
    glutReshapeFunc(Reshape);
    glutKeyboardFunc(Key);
    glutSpecialFunc(SpecialKey);
index 5ce07ecc63b8ceba64db64f9e7044ce1567ff105..b81004b067ddf183365c705aac5cb9b601b703ca 100644 (file)
@@ -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));
index dec89117bb93324198fccfeb22f02cb7f67df03a..364f5b0be3d5c48cd4e40c6d12789b3970066e16 100644 (file)
@@ -7,7 +7,10 @@ INCLUDES = \
        -I$(TOP)/include \
        $(X11_CFLAGS)
 
-SOURCES = $(wildcard *.c)
+SOURCES = \
+       eglut.c \
+       eglut_screen.c \
+       eglut_x11.c
 
 EGLUT_X11_OBJECTS = eglut.o eglut_x11.o
 EGLUT_SCREEN_OBJECTS = eglut.o eglut_screen.o
index 20158b1f0bc767d386a0064725cdc7963ee30bcc..79cd5fc65339e8910a5675a076d31df5dfbb0809 100644 (file)
@@ -62,9 +62,6 @@ xeglgears: xeglgears.o $(HEADERS) $(LIB_DEP)
 xeglthreads: xeglthreads.o $(HEADERS) $(LIB_DEP)
        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lpthread -lm $(X11_LIBS)
 
-$(EGLUT_DIR)/libeglut-x11.a $(EGLUT_DIR)/libeglut-screen.a:
-       @$(MAKE) -C $(EGLUT_DIR)
-
 # define the rules for EGLUT demos
 define eglut-demo-rule
 $(1)_x11 $(1)_screen: $(1)_%: $(1).o $(EGLUT_DIR)/libeglut-%.a $(LIB_DEP)
@@ -80,4 +77,3 @@ $(EGLUT_SCREEN_DEMOS):
 clean:
        -rm -f *.o *~
        -rm -f $(PROGRAMS) $(EGLUT_X11_DEMOS) $(EGLUT_SCREEN_DEMOS)
-       @$(MAKE) -C $(EGLUT_DIR) clean
index ba9d1b84d5faf77639816ca393b49be7501ee3c8..593145d4bf2a8931b4d8761781ad487ab32026ba 100644 (file)
@@ -81,9 +81,6 @@ two_win: two_win.o $(ES1_LIB_DEPS)
        $(CC) $(CFLAGS) two_win.o $(ES1_LIBS) -o $@
 
 
-$(EGLUT_DIR)/libeglut-x11.a $(EGLUT_DIR)/libeglut-screen.a:
-       @$(MAKE) -C $(EGLUT_DIR)
-
 # define the rules for EGLUT demos
 define eglut-demo-rule
 $(1)_x11 $(1)_screen: $(1)_%: $(1).o $(EGLUT_DIR)/libeglut-%.a $(ES1_LIB_DEPS)
@@ -100,4 +97,3 @@ $(EGLUT_SCREEN_DEMOS):
 clean:
        -rm -f *.o *~
        -rm -f $(PROGRAMS) $(EGLUT_X11_DEMOS) $(EGLUT_SCREEN_DEMOS)
-       @$(MAKE) -C $(EGLUT_DIR) clean
index 431341c8a3f3ddde0aa067bee7b8b5fedfc90a4e..3b11933db26ff6e02ae232ee02393859d53ec9a7 100644 (file)
@@ -34,9 +34,6 @@ lion_screen: lion.o lion-render.o $(EGLUT_DIR)/libeglut-screen.a
                -L$(EGLUT_DIR) -leglut-screen $(VG_LIBS) 
 
 
-$(EGLUT_DIR)/libeglut-x11.a $(EGLUT_DIR)/libeglut-screen.a:
-       @$(MAKE) -C $(EGLUT_DIR)
-
 # define the rules for EGLUT demos
 define eglut-demo-rule
 $(1)_x11 $(1)_screen: $(1)_%: $(1).o $(EGLUT_DIR)/libeglut-%.a
@@ -52,4 +49,3 @@ $(EGLUT_SCREEN_DEMOS):
 clean:
        rm -f *.o *~
        rm -f $(EGLUT_X11_DEMOS) $(EGLUT_SCREEN_DEMOS)
-       @$(MAKE) -C $(EGLUT_DIR) clean
index f53515cb0a76397c9d605a7b22f91571b1e0ec97..2a0f208083270546a96761956b7c736ae0147ff7 100644 (file)
@@ -5,7 +5,7 @@ include $(TOP)/configs/current
 
 INCDIR = $(TOP)/include
 
-OSMESA_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -l$(OSMESA_LIB) $(APP_LIB_DEPS)
+OSMESA_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(OSMESA_LIB) $(APP_LIB_DEPS)
 
 OSMESA16_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -lOSMesa16 -l$(GLU_LIB) \
        -l$(GL_LIB) $(APP_LIB_DEPS)
index 000b8c4a78150c79584a04f3887735ba9b732deb..5a00fdb246e7aeb8a0dd5f0187c30d9045da0c8a 100644 (file)
@@ -399,7 +399,11 @@ test(GLenum type, GLint bits, const char *filename)
 
    /* sanity checks */
    glGetIntegerv(GL_RED_BITS, &cBits);
-   assert(cBits == bits);
+   if (cBits != bits) {
+      fprintf(stderr, "Unable to create %d-bit/channel renderbuffer.\n", bits);
+      fprintf(stderr, "May need to recompile Mesa with CHAN_BITS=16 or 32.\n");
+      return 0;
+   }
    glGetIntegerv(GL_GREEN_BITS, &cBits);
    assert(cBits == bits);
    glGetIntegerv(GL_BLUE_BITS, &cBits);
index e4e86b9b4ce9469c78fb46d5ec93fb43ff5e9ba8..94adf478d90042120610d933c4a23c570e082394 100644 (file)
@@ -249,7 +249,7 @@ static void require_extension(const char *ext)
 
 static void Init(void)
 {
-   const char *const ver_string = (const char *const) glGetString(GL_VERSION);
+   const char *const ver_string = (const char *) glGetString(GL_VERSION);
    unsigned i;
 
    printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
index 7297f41b78718409dd90a485557b1d23422a6844..b33839cc875cb096d125d3f10b85f935cdf35a9b 100644 (file)
@@ -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));
index 3ee3ae2230c13539f790cc7ad56b2d73d3e2ae08..07806fc758d19274ce8bf52aa9d7e9cb62ffbbcf 100644 (file)
@@ -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 );
 
index 06a97761557555b2be934ee2d2145aae2104edae..796377186bd2a9cd3fd060b8659f3f35d70c1900 100644 (file)
@@ -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));
index 3574c1f7176661102d9aa3a4422a1f0876408a63..10481c22322e9a21df5626791cc6821a5413ecab 100644 (file)
@@ -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));
index 2988e20920026078c1240c072ad5ecc9e67546fa..ac9a8eae3b7dae8c80a625b0bfea6209f6258c64 100644 (file)
@@ -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;
index acf67d02c12d841fac1987a6063a4e86da03a6e4..c60ddde1f110f26058119dd5863cfda58d935c3b 100644 (file)
@@ -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, 
index 45001b44d0798b0275858ac5c1ce5abf2451089b..be5547265633bd8eb058025a91cf3a107e4e5afc 100644 (file)
@@ -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 );
 
index 2de7e2994af994d5ab350f784098fe03ad2035bb..e38c68904d4536472ea336f8cbcae99a865171d6 100644 (file)
@@ -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;
index 1010139a20ec5cf9ab65fea4a2c1fe684229451c..dec620023fcd0717dc88f24927e3e84090834a10 100644 (file)
@@ -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));
index 28307fef4f034c55e8eb34cb96a9db5e6ea470bf..2bafd3204f0ba7f69de1d0117bdbddd0ededf96e 100644 (file)
@@ -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));
index ee528d224398194f8edb1e43ce6b49ffe87273a9..bacae70bb53cc18c751b5af744ae9f344272414b 100644 (file)
@@ -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;
index c23b4ab05a6cb29ea63ff162d3b036210628ebca..d085541876db2e55fea58a462109da2f7e17e623 100644 (file)
@@ -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;
index 4d27b3a505be1f4de6e88a6c104f0f35f9244f03..0910eaaa799a77e5552d9a5ebdc15543d4c317ad 100644 (file)
 #include <GL/glew.h>
 #include <GL/glut.h>
 
-static GLint WinWidth = 500, WinHeight = 500;
+
+#define ZWIDTH 100
+#define ZHEIGHT 100
+
+#define ZOOM 4
+
+#define ZWIDTH2 (ZOOM * ZWIDTH)
+#define ZHEIGHT2 (ZOOM * ZHEIGHT)
+
+static GLint WinWidth = ZWIDTH + ZWIDTH2, WinHeight = ZHEIGHT + ZHEIGHT2;
 static GLboolean Invert = GL_FALSE;
 static GLboolean TestPacking = GL_FALSE;
 static GLboolean TestList = GL_FALSE;
@@ -19,8 +28,8 @@ static GLboolean TestList = GL_FALSE;
 
 static void Display(void)
 {
-   GLfloat depth[100 * 100 * 2];
-   GLfloat depth2[400 * 400]; /* *2 to test pixelstore stuff */
+   GLfloat depth[ZWIDTH * ZHEIGHT * 2];
+   GLfloat depth2[ZWIDTH2 * ZHEIGHT2]; /* *2 to test pixelstore stuff */
    GLuint list;
    GLenum depthType = GL_FLOAT;
 
@@ -30,7 +39,7 @@ static void Display(void)
    glEnable(GL_DEPTH_TEST);
 
    /* draw a sphere */
-   glViewport(0, 0, 100, 100);
+   glViewport(0, 0, ZWIDTH, ZHEIGHT);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-1, 1, -1, 1, -1, 0);  /* clip away back half of sphere */
@@ -44,12 +53,12 @@ static void Display(void)
    }
 
    /* read the depth image */
-   glReadPixels(0, 0, 100, 100, GL_DEPTH_COMPONENT, depthType, depth);
+   glReadPixels(0, 0, ZWIDTH, ZHEIGHT, GL_DEPTH_COMPONENT, depthType, depth);
    if (depthType == GL_FLOAT) {
       GLfloat min, max;
       int i;
       min = max = depth[0];
-      for (i = 1; i < 100 * 100; i++) {
+      for (i = 1; i < ZWIDTH * ZHEIGHT; i++) {
          if (depth[i] < min)
             min = depth[i];
          if (depth[i] > max)
@@ -58,9 +67,22 @@ static void Display(void)
       printf("Depth value range: [%f, %f]\n", min, max);
    }
 
+   /* debug */
+   if (0) {
+      int i;
+      float *z = depth + ZWIDTH * 50;
+      printf("z at y=50:\n");
+      for (i = 0; i < ZWIDTH; i++) {
+         printf("%5.3f ", z[i]);
+         if ((i + 1) % 12 == 0)
+            printf("\n");
+      }
+      printf("\n");
+   }
+
    /* Draw the Z image as luminance above original rendering */
-   glWindowPos2i(0, 100);
-   glDrawPixels(100, 100, GL_LUMINANCE, depthType, depth);
+   glWindowPos2i(0, ZHEIGHT);
+   glDrawPixels(ZWIDTH, ZHEIGHT, GL_LUMINANCE, depthType, depth);
 
    if (TestPacking) {
       glPixelStorei(GL_PACK_ROW_LENGTH, 0);
@@ -70,9 +92,9 @@ static void Display(void)
    }
 
    /* draw depth image with scaling (into z buffer) */
-   glPixelZoom(4.0, 4.0);
+   glPixelZoom(ZOOM, ZOOM);
    glColor4f(1, 0, 0, 0);
-   glWindowPos2i(100, 0);
+   glWindowPos2i(ZWIDTH, 0);
    if (Invert) {
       glPixelTransferf(GL_DEPTH_SCALE, -1.0);
       glPixelTransferf(GL_DEPTH_BIAS, 1.0);
@@ -80,13 +102,13 @@ static void Display(void)
    if (TestList) {
       list = glGenLists(1);
       glNewList(list, GL_COMPILE);
-      glDrawPixels(100, 100, GL_DEPTH_COMPONENT, depthType, depth);
+      glDrawPixels(ZWIDTH, ZHEIGHT, GL_DEPTH_COMPONENT, depthType, depth);
       glEndList();
       glCallList(list);
       glDeleteLists(list, 1);
    }
    else {
-      glDrawPixels(100, 100, GL_DEPTH_COMPONENT, depthType, depth);
+      glDrawPixels(ZWIDTH, ZHEIGHT, GL_DEPTH_COMPONENT, depthType, depth);
    }
    if (Invert) {
       glPixelTransferf(GL_DEPTH_SCALE, 1.0);
@@ -101,24 +123,25 @@ static void Display(void)
    glDisable(GL_DEPTH_TEST);
 
    /* read back scaled depth image */
-   glReadPixels(100, 0, 400, 400, GL_DEPTH_COMPONENT, GL_FLOAT, depth2);
+   glReadPixels(ZWIDTH, 0, ZWIDTH2, ZHEIGHT2, GL_DEPTH_COMPONENT, GL_FLOAT, depth2);
 
    /* debug */
    if (0) {
       int i;
-      float *z = depth2 + 400 * 200;
+      float *z = depth2 + ZWIDTH2 * 200;
       printf("z at y=200:\n");
-      for (i = 0; i < 400; i++) {
+      for (i = 0; i < ZWIDTH2; i++) {
          printf("%5.3f ", z[i]);
          if ((i + 1) % 12 == 0)
             printf("\n");
       }
+      printf("\n");
    }
 
    /* draw as luminance */
    glPixelZoom(1.0, 1.0);
-   glWindowPos2i(100, 0);
-   glDrawPixels(400, 400, GL_LUMINANCE, GL_FLOAT, depth2);
+   glWindowPos2i(ZWIDTH, 0);
+   glDrawPixels(ZWIDTH2, ZHEIGHT2, GL_LUMINANCE, GL_FLOAT, depth2);
 
    glutSwapBuffers();
 }
@@ -162,9 +185,13 @@ static void Init(void)
    const GLfloat gray[4] = {0.2, 0.2, 0.2, 1.0};
    const GLfloat white[4] = {1.0, 1.0, 1.0, 1.0};
    const GLfloat pos[4] = {0, 0, 10, 0};
+   GLint z;
+
+   glGetIntegerv(GL_DEPTH_BITS, &z);
 
    printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
    printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
+   printf("GL_DEPTH_BITS = %d\n", z);
 
    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, blue);
    glLightfv(GL_LIGHT0, GL_AMBIENT, gray);
index 583421ac8a0937a3b46f1e1ca6c395bbda183d5d..69f3c28c9e40665b09c8afbbc735a2001c3a4cc6 100644 (file)
@@ -710,7 +710,8 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
    dri2_dpy->fd = open(dri2_dpy->device_name, O_RDWR);
    if (dri2_dpy->fd == -1) {
       _eglLog(_EGL_FATAL,
-             "DRI2: could not open %s (%s)", path, strerror(errno));
+             "DRI2: could not open %s (%s)", dri2_dpy->device_name,
+              strerror(errno));
       goto cleanup_driver;
    }
 
index b5a9938c74093637d272f2e277a592f36f9213f3..1ba0724949a71dd7aed1a5be758e676f881ae65e 100644 (file)
@@ -37,7 +37,7 @@ depend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURC
        $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(GENERATED_SOURCES) 2> /dev/null
 
 $(PROGS): % : %.o
-       $(LD) $(filter %.o,$^) -o $@ -Wl,--start-group  $(LIBS) -Wl,--end-group
+       $(LD) $(LDFLAGS) $(filter %.o,$^) -o $@ -Wl,--start-group  $(LIBS) -Wl,--end-group
 
 # Emacs tags
 tags:
index f8e65cf6c61af0a3ff6602ca4e24143953ee1707..2daed382cf338a7a0aa03f06a01d082637382d0d 100644 (file)
@@ -101,6 +101,7 @@ C_SOURCES = \
        util/u_blit.c \
        util/u_blitter.c \
        util/u_cache.c \
+       util/u_caps.c \
        util/u_cpu_detect.c \
        util/u_dl.c \
        util/u_draw_quad.c \
index db3a1e73114b37ed33484e7b13afdf7654b786fa..a0673df8a8eafa5300293b6cae0e85cd770a47ae 100644 (file)
@@ -144,6 +144,7 @@ source = [
     'util/u_blit.c',
     'util/u_blitter.c',
     'util/u_cache.c',
+    'util/u_caps.c',
     'util/u_cpu_detect.c',
     'util/u_debug.c',
     'util/u_debug_memory.c',
index 6fd4bd36428058173a4e28526bdb7fef80282d6e..c5fe7efa0282345de4042a2b38b69786c765157b 100644 (file)
@@ -313,10 +313,13 @@ void cso_release_all( struct cso_context *ctx )
 }
 
 
+/**
+ * Free the CSO context.  NOTE: the state tracker should have previously called
+ * cso_release_all().
+ */
 void cso_destroy_context( struct cso_context *ctx )
 {
    if (ctx) {
-      /*cso_release_all( ctx );*/
       FREE( ctx );
    }
 }
@@ -349,6 +352,7 @@ enum pipe_error cso_set_blend(struct cso_context *ctx,
       if (!cso)
          return PIPE_ERROR_OUT_OF_MEMORY;
 
+      memset(&cso->state, 0, sizeof cso->state);
       memcpy(&cso->state, templ, key_size);
       cso->data = ctx->pipe->create_blend_state(ctx->pipe, &cso->state);
       cso->delete_state = (cso_state_callback)ctx->pipe->delete_blend_state;
index 9d1103176981af7d7bb9f010e8218f5606891196..2c234285b5e0b968b201d754ca08bd38c7dae889 100644 (file)
@@ -24,6 +24,8 @@
 /* generates the draw jit function */
 static void
 draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *var);
+static void
+draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *var);
 
 static void
 init_globals(struct draw_llvm *llvm)
@@ -205,7 +207,9 @@ draw_llvm_create(struct draw_context *draw)
 void
 draw_llvm_destroy(struct draw_llvm *llvm)
 {
-   free(llvm);
+   LLVMDisposePassManager(llvm->pass);
+
+   FREE(llvm);
 }
 
 struct draw_llvm_variant *
@@ -218,6 +222,7 @@ draw_llvm_prepare(struct draw_llvm *llvm, int num_inputs)
    llvm->vertex_header_ptr_type = create_vertex_header(llvm, num_inputs);
 
    draw_llvm_generate(llvm, variant);
+   draw_llvm_generate_elts(llvm, variant);
 
    return variant;
 }
@@ -252,7 +257,8 @@ generate_vs(struct draw_llvm *llvm,
                      NULL /*pos*/,
                      inputs,
                      outputs,
-                     NULL/*sampler*/);
+                     NULL/*sampler*/,
+                     &llvm->draw->vs.vertex_shader->info);
 }
 
 #if DEBUG_STORE
@@ -285,10 +291,16 @@ generate_fetch(LLVMBuilderRef builder,
    LLVMValueRef vbuffer_ptr = LLVMBuildGEP(builder, vbuffers_ptr,
                                            &indices, 1, "");
    LLVMValueRef vb_stride = draw_jit_vbuffer_stride(builder, vbuf);
+   LLVMValueRef vb_max_index = draw_jit_vbuffer_max_index(builder, vbuf);
    LLVMValueRef vb_buffer_offset = draw_jit_vbuffer_offset(builder, vbuf);
-   LLVMValueRef stride = LLVMBuildMul(builder,
-                                      vb_stride,
-                                      index, "");
+   LLVMValueRef cond;
+   LLVMValueRef stride;
+
+   cond = LLVMBuildICmp(builder, LLVMIntULE, index, vb_max_index, "");
+
+   index = LLVMBuildSelect(builder, cond, index, vb_max_index, "");
+
+   stride = LLVMBuildMul(builder, vb_stride, index, "");
 
    vbuffer_ptr = LLVMBuildLoad(builder, vbuffer_ptr, "vbuffer");
 
@@ -689,6 +701,158 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant)
       lp_disassemble(variant->jit_func);
 }
 
+
+static void
+draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *variant)
+{
+   LLVMTypeRef arg_types[7];
+   LLVMTypeRef func_type;
+   LLVMValueRef context_ptr;
+   LLVMBasicBlockRef block;
+   LLVMBuilderRef builder;
+   LLVMValueRef fetch_elts, fetch_count, stride, step, io_itr;
+   LLVMValueRef io_ptr, vbuffers_ptr, vb_ptr;
+   struct draw_context *draw = llvm->draw;
+   unsigned i, j;
+   struct lp_build_context bld;
+   struct lp_build_context bld_int;
+   struct lp_build_loop_state lp_loop;
+   struct lp_type vs_type = lp_type_float_vec(32);
+   const int max_vertices = 4;
+   LLVMValueRef outputs[PIPE_MAX_SHADER_OUTPUTS][NUM_CHANNELS];
+   LLVMValueRef fetch_max;
+
+   arg_types[0] = llvm->context_ptr_type;               /* context */
+   arg_types[1] = llvm->vertex_header_ptr_type;         /* vertex_header */
+   arg_types[2] = llvm->buffer_ptr_type;                /* vbuffers */
+   arg_types[3] = LLVMPointerType(LLVMInt32Type(), 0);  /* fetch_elts * */
+   arg_types[4] = LLVMInt32Type();                      /* fetch_count */
+   arg_types[5] = LLVMInt32Type();                      /* stride */
+   arg_types[6] = llvm->vb_ptr_type;                    /* pipe_vertex_buffer's */
+
+   func_type = LLVMFunctionType(LLVMVoidType(), arg_types, Elements(arg_types), 0);
+
+   variant->function_elts = LLVMAddFunction(llvm->module, "draw_llvm_shader_elts", func_type);
+   LLVMSetFunctionCallConv(variant->function_elts, LLVMCCallConv);
+   for(i = 0; i < Elements(arg_types); ++i)
+      if(LLVMGetTypeKind(arg_types[i]) == LLVMPointerTypeKind)
+         LLVMAddAttribute(LLVMGetParam(variant->function_elts, i), LLVMNoAliasAttribute);
+
+   context_ptr  = LLVMGetParam(variant->function_elts, 0);
+   io_ptr       = LLVMGetParam(variant->function_elts, 1);
+   vbuffers_ptr = LLVMGetParam(variant->function_elts, 2);
+   fetch_elts   = LLVMGetParam(variant->function_elts, 3);
+   fetch_count  = LLVMGetParam(variant->function_elts, 4);
+   stride       = LLVMGetParam(variant->function_elts, 5);
+   vb_ptr       = LLVMGetParam(variant->function_elts, 6);
+
+   lp_build_name(context_ptr, "context");
+   lp_build_name(io_ptr, "io");
+   lp_build_name(vbuffers_ptr, "vbuffers");
+   lp_build_name(fetch_elts, "fetch_elts");
+   lp_build_name(fetch_count, "fetch_count");
+   lp_build_name(stride, "stride");
+   lp_build_name(vb_ptr, "vb");
+
+   /*
+    * Function body
+    */
+
+   block = LLVMAppendBasicBlock(variant->function_elts, "entry");
+   builder = LLVMCreateBuilder();
+   LLVMPositionBuilderAtEnd(builder, block);
+
+   lp_build_context_init(&bld, builder, vs_type);
+   lp_build_context_init(&bld_int, builder, lp_type_int(32));
+
+   step = LLVMConstInt(LLVMInt32Type(), max_vertices, 0);
+
+   fetch_max = LLVMBuildSub(builder, fetch_count,
+                            LLVMConstInt(LLVMInt32Type(), 1, 0),
+                            "fetch_max");
+
+   lp_build_loop_begin(builder, LLVMConstInt(LLVMInt32Type(), 0, 0), &lp_loop);
+   {
+      LLVMValueRef inputs[PIPE_MAX_SHADER_INPUTS][NUM_CHANNELS];
+      LLVMValueRef aos_attribs[PIPE_MAX_SHADER_INPUTS][NUM_CHANNELS] = { { 0 } };
+      LLVMValueRef io;
+      const LLVMValueRef (*ptr_aos)[NUM_CHANNELS];
+
+      io_itr = lp_loop.counter;
+      io = LLVMBuildGEP(builder, io_ptr, &io_itr, 1, "");
+#if DEBUG_STORE
+      lp_build_printf(builder, " --- io %d = %p, loop counter %d\n",
+                      io_itr, io, lp_loop.counter);
+#endif
+      for (i = 0; i < NUM_CHANNELS; ++i) {
+         LLVMValueRef true_index = LLVMBuildAdd(
+            builder,
+            lp_loop.counter,
+            LLVMConstInt(LLVMInt32Type(), i, 0), "");
+         LLVMValueRef fetch_ptr;
+
+         /* make sure we're not out of bounds which can happen
+          * if fetch_count % 4 != 0, because on the last iteration
+          * a few of the 4 vertex fetches will be out of bounds */
+         true_index = lp_build_min(&bld_int, true_index, fetch_max);
+
+         fetch_ptr = LLVMBuildGEP(builder, fetch_elts,
+                                  &true_index, 1, "");
+         true_index = LLVMBuildLoad(builder, fetch_ptr, "fetch_elt");
+         for (j = 0; j < draw->pt.nr_vertex_elements; ++j) {
+            struct pipe_vertex_element *velem = &draw->pt.vertex_element[j];
+            LLVMValueRef vb_index = LLVMConstInt(LLVMInt32Type(),
+                                                 velem->vertex_buffer_index,
+                                                 0);
+            LLVMValueRef vb = LLVMBuildGEP(builder, vb_ptr,
+                                           &vb_index, 1, "");
+            generate_fetch(builder, vbuffers_ptr,
+                           &aos_attribs[j][i], velem, vb, true_index);
+         }
+      }
+      convert_to_soa(builder, aos_attribs, inputs,
+                     draw->pt.nr_vertex_elements);
+
+      ptr_aos = (const LLVMValueRef (*)[NUM_CHANNELS]) inputs;
+      generate_vs(llvm,
+                  builder,
+                  outputs,
+                  ptr_aos,
+                  context_ptr);
+
+      convert_to_aos(builder, io, outputs,
+                     draw->vs.vertex_shader->info.num_outputs,
+                     max_vertices);
+   }
+   lp_build_loop_end_cond(builder, fetch_count, step, LLVMIntUGE, &lp_loop);
+
+   LLVMBuildRetVoid(builder);
+
+   LLVMDisposeBuilder(builder);
+
+   /*
+    * Translate the LLVM IR into machine code.
+    */
+#ifdef DEBUG
+   if(LLVMVerifyFunction(variant->function_elts, LLVMPrintMessageAction)) {
+      LLVMDumpValue(variant->function_elts);
+      assert(0);
+   }
+#endif
+
+   LLVMRunFunctionPassManager(llvm->pass, variant->function_elts);
+
+   if (0) {
+      LLVMDumpValue(variant->function_elts);
+      debug_printf("\n");
+   }
+   variant->jit_func_elts = (draw_jit_vert_func_elts)LLVMGetPointerToGlobal(
+      llvm->draw->engine, variant->function_elts);
+
+   if (0)
+      lp_disassemble(variant->jit_func_elts);
+}
+
 void
 draw_llvm_make_variant_key(struct draw_llvm *llvm,
                            struct draw_llvm_variant_key *key)
index 28b9044a81eeb482a0c965e098aee3fbeb3b2b1b..58fee7f9d6064560b5db5c17af1dc2db8e206d02 100644 (file)
@@ -78,7 +78,10 @@ struct draw_jit_context
 #define draw_jit_vbuffer_stride(_builder, _ptr)         \
    lp_build_struct_get(_builder, _ptr, 0, "stride")
 
-#define draw_jit_vbuffer_offset(_builder, _ptr)                 \
+#define draw_jit_vbuffer_max_index(_builder, _ptr)      \
+   lp_build_struct_get(_builder, _ptr, 1, "max_index")
+
+#define draw_jit_vbuffer_offset(_builder, _ptr)         \
    lp_build_struct_get(_builder, _ptr, 2, "buffer_offset")
 
 
@@ -91,6 +94,16 @@ typedef void
                       unsigned stride,
                       struct pipe_vertex_buffer *vertex_buffers);
 
+
+typedef void
+(*draw_jit_vert_func_elts)(struct draw_jit_context *context,
+                           struct vertex_header *io,
+                           const char *vbuffers[PIPE_MAX_ATTRIBS],
+                           const unsigned *fetch_elts,
+                           unsigned fetch_count,
+                           unsigned stride,
+                           struct pipe_vertex_buffer *vertex_buffers);
+
 struct draw_llvm {
    struct draw_context *draw;
 
@@ -119,7 +132,9 @@ struct draw_llvm_variant
 {
    struct draw_llvm_variant_key key;
    LLVMValueRef function;
+   LLVMValueRef function_elts;
    draw_jit_vert_func jit_func;
+   draw_jit_vert_func_elts jit_func_elts;
 
    struct draw_llvm_variant *next;
 };
index ee2b8116032ad1c498a57ac77a1ac645b0d408d8..abbf6247ab824897a222811af2632740ebe5f97b 100644 (file)
@@ -137,7 +137,7 @@ emit_vertex( struct vbuf_stage *vbuf,
        */
       /* Note: we really do want data[0] here, not data[pos]: 
        */
-      vbuf->translate->set_buffer(vbuf->translate, 0, vertex->data[0], 0);
+      vbuf->translate->set_buffer(vbuf->translate, 0, vertex->data[0], 0, ~0);
       vbuf->translate->run(vbuf->translate, 0, 1, 0, vbuf->vertex_ptr);
 
       if (0) draw_dump_emitted_vertex(vbuf->vinfo, (uint8_t *)vbuf->vertex_ptr);
@@ -271,7 +271,7 @@ vbuf_start_prim( struct vbuf_stage *vbuf, uint prim )
       translate_key_sanitize(&hw_key);
       vbuf->translate = translate_cache_find(vbuf->cache, &hw_key);
 
-      vbuf->translate->set_buffer(vbuf->translate, 1, &vbuf->point_size, 0);
+      vbuf->translate->set_buffer(vbuf->translate, 1, &vbuf->point_size, 0, ~0);
    }
 
    vbuf->point_size = vbuf->stage.draw->rasterizer->point_size;
index 265a420d01e8c37df00c9284ecd9d38d9501a8e0..ab16706581565f2794b54fee46502c074bef9258 100644 (file)
@@ -54,7 +54,6 @@ static INLINE struct wideline_stage *wideline_stage( struct draw_stage *stage )
 
 /**
  * Draw a wide line by drawing a quad (two triangles).
- * XXX need to disable polygon stipple.
  */
 static void wideline_line( struct draw_stage *stage,
                            struct prim_header *header )
index 4bb3282f62c4c1bdc4981304dfc03ffa784129b8..a2bfb693c098c615a521da2c3e08183c0ae674a8 100644 (file)
@@ -132,6 +132,7 @@ struct draw_context
          struct draw_pt_middle_end *fetch_emit;
          struct draw_pt_middle_end *fetch_shade_emit;
          struct draw_pt_middle_end *general;
+         struct draw_pt_middle_end *llvm;
       } middle;
 
       struct {
@@ -253,8 +254,8 @@ struct draw_context
 
 #ifdef HAVE_LLVM
    LLVMExecutionEngineRef engine;
-   boolean use_llvm;
 #endif
+
    void *driver_private;
 };
 
index b5876bb1bdb5f4facf59e72c22ea2d2f8c1471da..b853f3a89f8d73e498e260c652c70de7e0175a6f 100644 (file)
 #include "util/u_math.h"
 #include "util/u_prim.h"
 
+
+DEBUG_GET_ONCE_BOOL_OPTION(draw_fse, "DRAW_FSE", FALSE)
+DEBUG_GET_ONCE_BOOL_OPTION(draw_no_fse, "DRAW_NO_FSE", FALSE)
+#ifdef HAVE_LLVM
+DEBUG_GET_ONCE_BOOL_OPTION(draw_use_llvm, "DRAW_USE_LLVM", TRUE)
+#endif
+
 static unsigned trim( unsigned count, unsigned first, unsigned incr )
 {
    if (count < first)
@@ -90,12 +97,16 @@ draw_pt_arrays(struct draw_context *draw,
       opt |= PT_SHADE;
    }
       
-   if (opt == 0) 
-      middle = draw->pt.middle.fetch_emit;
-   else if (opt == PT_SHADE && !draw->pt.no_fse)
-      middle = draw->pt.middle.fetch_shade_emit;
-   else
-      middle = draw->pt.middle.general;
+   if (draw->pt.middle.llvm) {
+      middle = draw->pt.middle.llvm;
+   } else {
+      if (opt == 0)
+         middle = draw->pt.middle.fetch_emit;
+      else if (opt == PT_SHADE && !draw->pt.no_fse)
+         middle = draw->pt.middle.fetch_shade_emit;
+      else
+         middle = draw->pt.middle.general;
+   }
 
 
    /* Pick the right frontend
@@ -122,8 +133,8 @@ draw_pt_arrays(struct draw_context *draw,
 
 boolean draw_pt_init( struct draw_context *draw )
 {
-   draw->pt.test_fse = debug_get_bool_option("DRAW_FSE", FALSE);
-   draw->pt.no_fse = debug_get_bool_option("DRAW_NO_FSE", FALSE);
+   draw->pt.test_fse = debug_get_option_draw_fse();
+   draw->pt.no_fse = debug_get_option_draw_no_fse();
 
    draw->pt.front.vcache = draw_pt_vcache( draw );
    if (!draw->pt.front.vcache)
@@ -141,25 +152,26 @@ boolean draw_pt_init( struct draw_context *draw )
    if (!draw->pt.middle.fetch_shade_emit)
       return FALSE;
 
-#if HAVE_LLVM
-   draw->use_llvm = debug_get_bool_option("DRAW_USE_LLVM", TRUE);
-   if (draw->use_llvm)
-      draw->pt.middle.general = draw_pt_fetch_pipeline_or_emit_llvm( draw );
-#else
-   draw->pt.middle.general = NULL;
-#endif
-
-   if (!draw->pt.middle.general)
-      draw->pt.middle.general = draw_pt_fetch_pipeline_or_emit( draw );
+   draw->pt.middle.general = draw_pt_fetch_pipeline_or_emit( draw );
    if (!draw->pt.middle.general)
       return FALSE;
 
+#if HAVE_LLVM
+   if (debug_get_option_draw_use_llvm())
+      draw->pt.middle.llvm = draw_pt_fetch_pipeline_or_emit_llvm( draw );
+#endif
+
    return TRUE;
 }
 
 
 void draw_pt_destroy( struct draw_context *draw )
 {
+   if (draw->pt.middle.llvm) {
+      draw->pt.middle.llvm->destroy( draw->pt.middle.llvm );
+      draw->pt.middle.llvm = NULL;
+   }
+
    if (draw->pt.middle.general) {
       draw->pt.middle.general->destroy( draw->pt.middle.general );
       draw->pt.middle.general = NULL;
index a7917f54b048257be04dcbe1aa6cda69d6bcff2d..ad48fa39a4f0ad751058b9b91f07e50bc07cb080 100644 (file)
@@ -171,12 +171,14 @@ void draw_pt_emit( struct pt_emit *emit,
    translate->set_buffer(translate, 
                         0, 
                         vertex_data,
-                        stride );
+                        stride,
+                        ~0);
 
    translate->set_buffer(translate, 
                         1, 
                         &draw->rasterizer->point_size,
-                        0);
+                        0,
+                        ~0);
 
    translate->run( translate,
                   0, 
@@ -232,11 +234,11 @@ void draw_pt_emit_linear(struct pt_emit *emit,
       goto fail;
 
    translate->set_buffer(translate, 0,
-                        vertex_data, stride);
+                        vertex_data, stride, count - 1);
 
    translate->set_buffer(translate, 1,
                         &draw->rasterizer->point_size,
-                        0);
+                        0, ~0);
 
    translate->run(translate,
                   0,
index 252be5053e4c75bdb260ad43d128326761f00d7b..a1347221b5db6a53f11f06802a4653f8701e827b 100644 (file)
@@ -149,7 +149,8 @@ void draw_pt_fetch_prepare( struct pt_fetch *fetch,
         fetch->translate->set_buffer(fetch->translate,
                                      draw->pt.nr_vertex_buffers,
                                      &vh,
-                                     0);
+                                     0,
+                                     ~0);
       }
    }
 
@@ -172,7 +173,8 @@ void draw_pt_fetch_run( struct pt_fetch *fetch,
                            i, 
                            ((char *)draw->pt.user.vbuffer[i] + 
                             draw->pt.vertex_buffer[i].buffer_offset),
-                           draw->pt.vertex_buffer[i].stride );
+                           draw->pt.vertex_buffer[i].stride,
+                           draw->pt.vertex_buffer[i].max_index);
    }
 
    translate->run_elts( translate,
@@ -198,7 +200,8 @@ void draw_pt_fetch_run_linear( struct pt_fetch *fetch,
                            i,
                            ((char *)draw->pt.user.vbuffer[i] +
                             draw->pt.vertex_buffer[i].buffer_offset),
-                           draw->pt.vertex_buffer[i].stride );
+                           draw->pt.vertex_buffer[i].stride,
+                           draw->pt.vertex_buffer[i].max_index);
    }
 
    translate->run( translate,
index 1994ddf2bcc45c0e7d81fdcab75e3d9d02b04dea..d7735bf1ac9dcf0642eb08cd473bae520439205b 100644 (file)
@@ -168,7 +168,8 @@ static void fetch_emit_prepare( struct draw_pt_middle_end *middle,
       feme->translate->set_buffer(feme->translate, 
                                  draw->pt.nr_vertex_buffers, 
                                  &feme->point_size,
-                                 0);
+                                 0,
+                                 ~0);
    }
    
    feme->point_size = draw->rasterizer->point_size;
@@ -178,7 +179,8 @@ static void fetch_emit_prepare( struct draw_pt_middle_end *middle,
                                   i, 
                                   ((char *)draw->pt.user.vbuffer[i] + 
                                    draw->pt.vertex_buffer[i].buffer_offset),
-                                  draw->pt.vertex_buffer[i].stride );
+                                  draw->pt.vertex_buffer[i].stride,
+                                  draw->pt.vertex_buffer[i].max_index);
    }
 
    *max_vertices = (draw->render->max_vertex_buffer_bytes / 
index 389e2b105e56aa962c4730d995f48f49c94e232e..cbb5b6c960535e6320b61a67f003a1035b61a120 100644 (file)
@@ -167,7 +167,8 @@ static void fse_prepare( struct draw_pt_middle_end *middle,
                                i, 
                                ((const ubyte *) draw->pt.user.vbuffer[i] + 
                                 draw->pt.vertex_buffer[i].buffer_offset),
-                              draw->pt.vertex_buffer[i].stride );
+                              draw->pt.vertex_buffer[i].stride,
+                              draw->pt.vertex_buffer[i].max_index );
    }
 
    *max_vertices = (draw->render->max_vertex_buffer_bytes / 
index f71271bd915645e876914a21f5d9bef6d97e5d51..35913a599515cf23642df3c6563888f639038817 100644 (file)
@@ -167,8 +167,6 @@ static void llvm_middle_end_run( 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 *vshader = draw->vs.vertex_shader;
-   struct draw_geometry_shader *gshader = draw->gs.geometry_shader;
    unsigned opt = fpme->opt;
    unsigned alloc_count = align( fetch_count, 4 );
 
@@ -182,35 +180,13 @@ static void llvm_middle_end_run( struct draw_pt_middle_end *middle,
       return;
    }
 
-   /* Fetch into our vertex buffer
-    */
-   draw_pt_fetch_run( fpme->fetch,
-                     fetch_elts,
-                     fetch_count,
-                     (char *)pipeline_verts );
-
-   /* Run the shader, note that this overwrites the data[] parts of
-    * the pipeline verts.  If there is no shader, eg if
-    * bypass_vs_clip_and_viewport, then the inputs == outputs, and are
-    * already in the correct place.*/
-   if (opt & PT_SHADE)
-   {
-      vshader->run_linear(vshader,
-                          (const float (*)[4])pipeline_verts->data,
-                          (      float (*)[4])pipeline_verts->data,
-                          draw->pt.user.vs_constants,
-                          fetch_count,
-                          fpme->vertex_size,
-                          fpme->vertex_size);
-      if (gshader)
-         draw_geometry_shader_run(gshader,
-                                  (const float (*)[4])pipeline_verts->data,
-                                  (      float (*)[4])pipeline_verts->data,
-                                  draw->pt.user.gs_constants,
-                                  fetch_count,
-                                  fpme->vertex_size,
-                                  fpme->vertex_size);
-   }
+   fpme->current_variant->jit_func_elts( &fpme->llvm->jit_context,
+                                         pipeline_verts,
+                                         (const char **)draw->pt.user.vbuffer,
+                                         fetch_elts,
+                                         fetch_count,
+                                         fpme->vertex_size,
+                                         draw->pt.vertex_buffer );
 
    if (draw_pt_post_vs_run( fpme->post_vs,
                            pipeline_verts,
@@ -373,7 +349,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 );
 
index cfd515402419b521dbc461bad90792bb69ab3d15..c2832eefa2a10bf38247899dd943d5a8b33768f1 100644 (file)
@@ -46,7 +46,7 @@
 #include "tgsi/tgsi_dump.h"
 #include "tgsi/tgsi_exec.h"
 
-
+DEBUG_GET_ONCE_BOOL_OPTION(gallium_dump_vs, "GALLIUM_DUMP_VS", FALSE)
 
 void
 draw_vs_set_constants(struct draw_context *draw,
@@ -157,7 +157,7 @@ draw_delete_vertex_shader(struct draw_context *draw,
 boolean 
 draw_vs_init( struct draw_context *draw )
 {
-   draw->dump_vs = debug_get_bool_option("GALLIUM_DUMP_VS", FALSE);
+   draw->dump_vs = debug_get_option_gallium_dump_vs();
 
    draw->vs.machine = tgsi_exec_machine_create();
    if (!draw->vs.machine)
index f49332352b0ef63478d1b5e2f30300800a7f87f0..6c7e94db43344f33a6c68411b5d8343fc8c844a4 100644 (file)
@@ -80,7 +80,8 @@ struct draw_vs_varient {
    void (*set_buffer)( struct draw_vs_varient *,
                       unsigned i,
                       const void *ptr,
-                      unsigned stride );
+                      unsigned stride,
+                      unsigned max_stride );
 
    void (PIPE_CDECL *run_linear)( struct draw_vs_varient *shader,
                                   unsigned start,
@@ -168,8 +169,9 @@ draw_create_vs_ppc(struct draw_context *draw,
 struct draw_vs_varient_key;
 struct draw_vertex_shader;
 
-struct draw_vs_varient *draw_vs_varient_aos_sse( struct draw_vertex_shader *vs,
-                                                 const struct draw_vs_varient_key *key );
+struct draw_vs_varient *
+draw_vs_create_varient_aos_sse( struct draw_vertex_shader *vs,
+                                const struct draw_vs_varient_key *key );
 
 
 
@@ -187,8 +189,9 @@ struct translate *draw_vs_get_fetch( struct draw_context *draw,
 struct translate *draw_vs_get_emit( struct draw_context *draw,
                                     struct translate_key *key );
 
-struct draw_vs_varient *draw_vs_varient_generic( struct draw_vertex_shader *vs,
-                                                 const struct draw_vs_varient_key *key );
+struct draw_vs_varient *
+draw_vs_create_varient_generic( struct draw_vertex_shader *vs,
+                                const struct draw_vs_varient_key *key );
 
 
 
index e7121f3654139ce4da701e093a5fe95b7cd9fec2..19f49e34c8bd5a9f7683131110d2a6f8c34a62af 100644 (file)
@@ -2089,13 +2089,21 @@ static boolean build_vertex_program( struct draw_vs_varient_aos_sse *varient,
 }
 
 
+/** cast wrapper */
+static INLINE struct draw_vs_varient_aos_sse *
+draw_vs_varient_aos_sse(struct draw_vs_varient *varient)
+{
+   return (struct draw_vs_varient_aos_sse *) varient;
+}
+
 
 static void vaos_set_buffer( struct draw_vs_varient *varient,
                              unsigned buf,
                              const void *ptr,
-                             unsigned stride )
+                             unsigned stride,
+                             unsigned max_stride)
 {
-   struct draw_vs_varient_aos_sse *vaos = (struct draw_vs_varient_aos_sse *)varient;
+   struct draw_vs_varient_aos_sse *vaos = draw_vs_varient_aos_sse(varient);
 
    if (buf < vaos->nr_vb) {
       vaos->buffer[buf].base_ptr = (char *)ptr;
@@ -2112,7 +2120,7 @@ static void PIPE_CDECL vaos_run_elts( struct draw_vs_varient *varient,
                                       unsigned count,
                                       void *output_buffer )
 {
-   struct draw_vs_varient_aos_sse *vaos = (struct draw_vs_varient_aos_sse *)varient;
+   struct draw_vs_varient_aos_sse *vaos = draw_vs_varient_aos_sse(varient);
    struct aos_machine *machine = vaos->draw->vs.aos_machine;
    unsigned i;
 
@@ -2136,7 +2144,7 @@ static void PIPE_CDECL vaos_run_linear( struct draw_vs_varient *varient,
                                         unsigned count,
                                         void *output_buffer )
 {
-   struct draw_vs_varient_aos_sse *vaos = (struct draw_vs_varient_aos_sse *)varient;
+   struct draw_vs_varient_aos_sse *vaos = draw_vs_varient_aos_sse(varient);
    struct aos_machine *machine = vaos->draw->vs.aos_machine;
    unsigned i;
 
@@ -2165,7 +2173,7 @@ static void PIPE_CDECL vaos_run_linear( struct draw_vs_varient *varient,
 
 static void vaos_destroy( struct draw_vs_varient *varient )
 {
-   struct draw_vs_varient_aos_sse *vaos = (struct draw_vs_varient_aos_sse *)varient;
+   struct draw_vs_varient_aos_sse *vaos = draw_vs_varient_aos_sse(varient);
 
    FREE( vaos->buffer );
 
@@ -2241,13 +2249,14 @@ static struct draw_vs_varient *varient_aos_sse( struct draw_vertex_shader *vs,
 }
 
 
-struct draw_vs_varient *draw_vs_varient_aos_sse( struct draw_vertex_shader *vs,
-                                                 const struct draw_vs_varient_key *key )
+struct draw_vs_varient *
+draw_vs_create_varient_aos_sse( struct draw_vertex_shader *vs,
+                                const struct draw_vs_varient_key *key )
 {
    struct draw_vs_varient *varient = varient_aos_sse( vs, key );
 
    if (varient == NULL) {
-      varient = draw_vs_varient_generic( vs, key );
+      varient = draw_vs_create_varient_generic( vs, key );
    }
 
    return varient;
index 7deca2b69d946e9bcdbee454f64a084bbc75c950..bc34d390dae6e8277fea3e96a47e2db585498820 100644 (file)
@@ -203,7 +203,7 @@ draw_create_vs_exec(struct draw_context *draw,
    vs->base.prepare = vs_exec_prepare;
    vs->base.run_linear = vs_exec_run_linear;
    vs->base.delete = vs_exec_delete;
-   vs->base.create_varient = draw_vs_varient_generic;
+   vs->base.create_varient = draw_vs_create_varient_generic;
    vs->machine = draw->vs.machine;
 
    return &vs->base;
index d869eecec5e3119a8521a2fbea7e29b6187a8099..5df84916c5126698139e150e1bd4d1f9b47f56ed 100644 (file)
@@ -125,7 +125,7 @@ vs_ppc_run_linear( struct draw_vertex_shader *base,
        */
       shader->func(inputs_soa, outputs_soa, temps_soa,
                   (float (*)[4]) shader->base.immediates,
-                   (const float (*)[4])constants[0],
+                   (float (*)[4])constants[0],
                    ppc_builtin_constants);
 
       /* convert (up to) four output verts from SoA back to AoS format */
@@ -190,7 +190,7 @@ draw_create_vs_ppc(struct draw_context *draw,
       vs->base.create_varient = draw_vs_varient_aos_ppc;
    else
 #endif
-      vs->base.create_varient = draw_vs_varient_generic;
+      vs->base.create_varient = draw_vs_create_varient_generic;
    vs->base.prepare = vs_ppc_prepare;
    vs->base.run_linear = vs_ppc_run_linear;
    vs->base.delete = vs_ppc_delete;
index 54e6423388f200b9d6e8a32f9bcce01969015581..14c95082a9df467634e4fcf517c2c3db3b7b0066 100644 (file)
@@ -165,9 +165,9 @@ draw_create_vs_sse(struct draw_context *draw,
 
    vs->base.draw = draw;
    if (1)
-      vs->base.create_varient = draw_vs_varient_aos_sse;
+      vs->base.create_varient = draw_vs_create_varient_aos_sse;
    else
-      vs->base.create_varient = draw_vs_varient_generic;
+      vs->base.create_varient = draw_vs_create_varient_generic;
    vs->base.prepare = vs_sse_prepare;
    vs->base.run_linear = vs_sse_run_linear;
    vs->base.delete = vs_sse_delete;
index 5ed706cb4ff01d15079ab958301b2a3ddb579382..6eb26927f27366130d8185f05b649758bbb3e103 100644 (file)
@@ -66,14 +66,16 @@ struct draw_vs_varient_generic {
 static void vsvg_set_buffer( struct draw_vs_varient *varient,
                              unsigned buffer,
                              const void *ptr,
-                             unsigned stride )
+                             unsigned stride,
+                             unsigned max_index )
 {
    struct draw_vs_varient_generic *vsvg = (struct draw_vs_varient_generic *)varient;
 
    vsvg->fetch->set_buffer(vsvg->fetch, 
                            buffer, 
                            ptr, 
-                           stride);
+                           stride,
+                           max_index );
 }
 
 
@@ -172,12 +174,14 @@ static void PIPE_CDECL vsvg_run_elts( struct draw_vs_varient *varient,
    vsvg->emit->set_buffer( vsvg->emit,
                            0, 
                            temp_buffer,
-                           temp_vertex_stride );
+                           temp_vertex_stride,
+                           ~0 );
 
    vsvg->emit->set_buffer( vsvg->emit, 
                            1,
                            &vsvg->draw->rasterizer->point_size,
-                           0);
+                           0,
+                           ~0 );
 
    vsvg->emit->run( vsvg->emit,
                     0, count,
@@ -232,12 +236,14 @@ static void PIPE_CDECL vsvg_run_linear( struct draw_vs_varient *varient,
    vsvg->emit->set_buffer( vsvg->emit,
                            0, 
                            temp_buffer,
-                           temp_vertex_stride );
+                           temp_vertex_stride,
+                           ~0 );
    
    vsvg->emit->set_buffer( vsvg->emit, 
                            1,
                            &vsvg->draw->rasterizer->point_size,
-                           0);
+                           0,
+                           ~0 );
    
    vsvg->emit->run( vsvg->emit,
                     0, count,
@@ -257,8 +263,9 @@ static void vsvg_destroy( struct draw_vs_varient *varient )
 }
 
 
-struct draw_vs_varient *draw_vs_varient_generic( struct draw_vertex_shader *vs,
-                                                 const struct draw_vs_varient_key *key )
+struct draw_vs_varient *
+draw_vs_create_varient_generic( struct draw_vertex_shader *vs,
+                                const struct draw_vs_varient_key *key )
 {
    unsigned i;
    struct translate_key fetch, emit;
index 8e8fcccf564ead77eae89145de1df7bbd7946622..20ae958714be6778ecaad1405be7a90fedbb7312 100644 (file)
@@ -1210,6 +1210,14 @@ LLVMValueRef
 lp_build_cos(struct lp_build_context *bld,
               LLVMValueRef a)
 {
+#ifdef PIPE_OS_WINDOWS
+   /*
+    * FIXME: X86 backend translates llvm.cos.v4f32 to 4 calls to CRT's cosf()
+    * which is neither efficient nor does the CRT linkage work on Windows
+    * causing segmentation fault. So simply disable the code for now.
+    */
+   return bld->one;
+#else
    const struct lp_type type = bld->type;
    LLVMTypeRef vec_type = lp_build_vec_type(type);
    char intrinsic[32];
@@ -1220,6 +1228,7 @@ lp_build_cos(struct lp_build_context *bld,
    util_snprintf(intrinsic, sizeof intrinsic, "llvm.cos.v%uf%u", type.length, type.width);
 
    return lp_build_intrinsic_unary(bld->builder, intrinsic, vec_type, a);
+#endif
 }
 
 
@@ -1230,6 +1239,14 @@ LLVMValueRef
 lp_build_sin(struct lp_build_context *bld,
               LLVMValueRef a)
 {
+#ifdef PIPE_OS_WINDOWS
+   /*
+    * FIXME: X86 backend translates llvm.sin.v4f32 to 4 calls to CRT's sinf()
+    * which is neither efficient nor does the CRT linkage work on Windows
+    * causing segmentation fault. So simply disable the code for now.
+    */
+   return bld->zero;
+#else
    const struct lp_type type = bld->type;
    LLVMTypeRef vec_type = lp_build_vec_type(type);
    char intrinsic[32];
@@ -1240,6 +1257,7 @@ lp_build_sin(struct lp_build_context *bld,
    util_snprintf(intrinsic, sizeof intrinsic, "llvm.sin.v%uf%u", type.length, type.width);
 
    return lp_build_intrinsic_unary(bld->builder, intrinsic, vec_type, a);
+#endif
 }
 
 
@@ -1502,8 +1520,10 @@ lp_build_log2_approx(struct lp_build_context *bld,
       res = LLVMBuildAdd(bld->builder, logmant, logexp, "");
    }
 
-   if(p_exp)
+   if(p_exp) {
+      exp = LLVMBuildBitCast(bld->builder, exp, vec_type, "");
       *p_exp = exp;
+   }
 
    if(p_floor_log2)
       *p_floor_log2 = logexp;
@@ -1573,8 +1593,10 @@ lp_build_float_log2_approx(struct lp_build_context *bld,
       res = LLVMBuildAdd(bld->builder, logmant, logexp, "");
    }
 
-   if(p_exp)
+   if(p_exp) {
+      exp = LLVMBuildBitCast(bld->builder, exp, float_type, "");
       *p_exp = exp;
+   }
 
    if(p_floor_log2)
       *p_floor_log2 = logexp;
index e60ab4f6ba193f7c94b9fa12a0ee383618ccb913..8f15b1d287d40076d75de1bf37405a78cebd33ab 100644 (file)
@@ -792,3 +792,78 @@ lp_build_endif(struct lp_build_if_state *ctx)
    /* Resume building code at end of the ifthen->merge_block */
    LLVMPositionBuilderAtEnd(ctx->builder, ifthen->merge_block);
 }
+
+
+/**
+ * Allocate a scalar (or vector) variable.
+ *
+ * Although not strictly part of control flow, control flow has deep impact in
+ * how variables should be allocated.
+ *
+ * The mem2reg optimization pass is the recommended way to dealing with mutable
+ * variables, and SSA. It looks for allocas and if it can handle them, it
+ * promotes them, but only looks for alloca instructions in the entry block of
+ * the function. Being in the entry block guarantees that the alloca is only
+ * executed once, which makes analysis simpler.
+ *
+ * See also:
+ * - http://www.llvm.org/docs/tutorial/OCamlLangImpl7.html#memory
+ */
+LLVMValueRef
+lp_build_alloca(LLVMBuilderRef builder,
+                LLVMTypeRef type,
+                const char *name)
+{
+   LLVMBasicBlockRef current_block = LLVMGetInsertBlock(builder);
+   LLVMValueRef function = LLVMGetBasicBlockParent(current_block);
+   LLVMBasicBlockRef first_block = LLVMGetEntryBasicBlock(function);
+   LLVMValueRef first_instr = LLVMGetFirstInstruction(first_block);
+   LLVMBuilderRef first_builder = LLVMCreateBuilder();
+   LLVMValueRef res;
+
+   LLVMPositionBuilderAtEnd(first_builder, first_block);
+   LLVMPositionBuilderBefore(first_builder, first_instr);
+
+   res = LLVMBuildAlloca(first_builder, type, name);
+
+   LLVMDisposeBuilder(first_builder);
+
+   return res;
+}
+
+
+/**
+ * Allocate an array of scalars/vectors.
+ *
+ * mem2reg pass is not capable of promoting structs or arrays to registers, but
+ * we still put it in the first block anyway as failure to put allocas in the
+ * first block may prevent the X86 backend from successfully align the stack as
+ * required.
+ *
+ * Also the scalarrepl pass is supossedly more powerful and can promote
+ * arrays in many cases.
+ *
+ * See also:
+ * - http://www.llvm.org/docs/tutorial/OCamlLangImpl7.html#memory
+ */
+LLVMValueRef
+lp_build_array_alloca(LLVMBuilderRef builder,
+                      LLVMTypeRef type,
+                      LLVMValueRef count,
+                      const char *name)
+{
+   LLVMBasicBlockRef current_block = LLVMGetInsertBlock(builder);
+   LLVMValueRef function = LLVMGetBasicBlockParent(current_block);
+   LLVMBasicBlockRef first_block = LLVMGetEntryBasicBlock(function);
+   LLVMValueRef first_instr = LLVMGetFirstInstruction(first_block);
+   LLVMBuilderRef first_builder = LLVMCreateBuilder();
+   LLVMValueRef res;
+
+   LLVMPositionBuilderBefore(first_builder, first_instr);
+
+   res = LLVMBuildArrayAlloca(first_builder, type, count, name);
+
+   LLVMDisposeBuilder(first_builder);
+
+   return res;
+}
index 745838570c87629a8767ecf70d8b4417ffa6d8cc..fffb493a93b2470a9a542e14aea7946bae54026c 100644 (file)
@@ -156,5 +156,15 @@ lp_build_endif(struct lp_build_if_state *ctx);
 LLVMBasicBlockRef
 lp_build_insert_new_block(LLVMBuilderRef builder, const char *name);
 
+LLVMValueRef
+lp_build_alloca(LLVMBuilderRef builder,
+                LLVMTypeRef type,
+                const char *name);
+
+LLVMValueRef
+lp_build_array_alloca(LLVMBuilderRef builder,
+                      LLVMTypeRef type,
+                      LLVMValueRef count,
+                      const char *name);
 
 #endif /* !LP_BLD_FLOW_H */
index a5a019fa92a005968385f705daff4cdd088a2b22..6257e9a4047cf5de7bc3026e4253c43e71585054 100644 (file)
@@ -40,6 +40,7 @@
 
 #include "lp_bld_init.h"
 #include "lp_bld_type.h"
+#include "lp_bld_flow.h"
 #include "lp_bld_format.h"
 
 
@@ -370,11 +371,7 @@ lp_build_fetch_rgba_aos(LLVMBuilderRef builder,
          LLVMAddGlobalMapping(lp_build_engine, function, format_desc->fetch_rgba_float);
       }
 
-      /*
-       * XXX: this should better go to the first block in the function
-       */
-
-      tmp = LLVMBuildAlloca(builder, LLVMVectorType(LLVMFloatType(), 4), "");
+      tmp = lp_build_alloca(builder, LLVMVectorType(LLVMFloatType(), 4), "");
 
       /*
        * Invoke format_desc->fetch_rgba_float() for each pixel and insert the result
index de07c222a39e1ec052e924f3ee39df2ac17bef75..5067d0a164f4cf7b9d3ee5c3483ad59ec6054c58 100644 (file)
@@ -27,6 +27,7 @@
 
 
 #include "pipe/p_compiler.h"
+#include "util/u_cpu_detect.h"
 #include "util/u_debug.h"
 #include "lp_bld_init.h"
 
@@ -62,6 +63,15 @@ lp_build_init(void)
 
    if (!lp_build_target)
       lp_build_target = LLVMGetExecutionEngineTargetData(lp_build_engine);
+
+   util_cpu_detect();
+
+#if 0
+   /* For simulating less capable machines */
+   util_cpu_caps.has_sse3 = 0;
+   util_cpu_caps.has_ssse3 = 0;
+   util_cpu_caps.has_sse4_1 = 0;
+#endif
 }
 
 
index a3b697011626daba23662bd98a41f695d6ce3c17..d13fa1a5d043b4f5cf9c9f8e23a477647fe534bd 100644 (file)
@@ -472,18 +472,6 @@ lp_build_select_aos(struct lp_build_context *bld,
    }
 }
 
-LLVMValueRef
-lp_build_alloca(struct lp_build_context *bld)
-{
-   const struct lp_type type = bld->type;
-
-   if (type.length > 1) { /*vector*/
-      return LLVMBuildAlloca(bld->builder, lp_build_vec_type(type), "");
-   } else { /*scalar*/
-      return LLVMBuildAlloca(bld->builder, lp_build_elem_type(type), "");
-   }
-}
-
 
 /** Return (a & ~b) */
 LLVMValueRef
index 00a8c750196d0a62c246fb16ab32acbba3a49f67..29f9fc3b205af3e415eb462403c115a960335499 100644 (file)
@@ -76,9 +76,6 @@ lp_build_select_aos(struct lp_build_context *bld,
                     LLVMValueRef b,
                     const boolean cond[4]);
 
-LLVMValueRef
-lp_build_alloca(struct lp_build_context *bld);
-
 
 LLVMValueRef
 lp_build_andc(struct lp_build_context *bld, LLVMValueRef a, LLVMValueRef b);
index eb75b9b393dbcc76436925df6c6bcd3cd1c2b421..195a4953ab15b54b7fe8b282eece505533acdcb5 100644 (file)
@@ -77,6 +77,11 @@ lp_sampler_static_state(struct lp_sampler_static_state *state,
     */
 
    state->format            = view->format;
+   state->swizzle_r         = view->swizzle_r;
+   state->swizzle_g         = view->swizzle_g;
+   state->swizzle_b         = view->swizzle_b;
+   state->swizzle_a         = view->swizzle_a;
+
    state->target            = texture->target;
    state->pot_width         = util_is_pot(texture->width0);
    state->pot_height        = util_is_pot(texture->height0);
@@ -181,54 +186,16 @@ lp_build_sample_offset(struct lp_build_context *bld,
    LLVMValueRef offset;
 
    x_stride = lp_build_const_vec(bld->type, format_desc->block.bits/8);
+   offset = lp_build_mul(bld, x, x_stride);
 
-   if(format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS) {
-      LLVMValueRef x_lo, x_hi;
-      LLVMValueRef y_lo, y_hi;
-      LLVMValueRef x_stride_lo, x_stride_hi;
-      LLVMValueRef y_stride_lo, y_stride_hi;
-      LLVMValueRef x_offset_lo, x_offset_hi;
-      LLVMValueRef y_offset_lo, y_offset_hi;
-      LLVMValueRef offset_lo, offset_hi;
-
-      /* XXX 1D & 3D addressing not done yet */
-      assert(!z);
-      assert(!z_stride);
-
-      x_lo = LLVMBuildAnd(bld->builder, x, bld->one, "");
-      y_lo = LLVMBuildAnd(bld->builder, y, bld->one, "");
-
-      x_hi = LLVMBuildLShr(bld->builder, x, bld->one, "");
-      y_hi = LLVMBuildLShr(bld->builder, y, bld->one, "");
-
-      x_stride_lo = x_stride;
-      y_stride_lo = lp_build_const_vec(bld->type, 2*format_desc->block.bits/8);
-
-      x_stride_hi = lp_build_const_vec(bld->type, 4*format_desc->block.bits/8);
-      y_stride_hi = LLVMBuildShl(bld->builder, y_stride, bld->one, "");
-
-      x_offset_lo = lp_build_mul(bld, x_lo, x_stride_lo);
-      y_offset_lo = lp_build_mul(bld, y_lo, y_stride_lo);
-      offset_lo = lp_build_add(bld, x_offset_lo, y_offset_lo);
-
-      x_offset_hi = lp_build_mul(bld, x_hi, x_stride_hi);
-      y_offset_hi = lp_build_mul(bld, y_hi, y_stride_hi);
-      offset_hi = lp_build_add(bld, x_offset_hi, y_offset_hi);
-
-      offset = lp_build_add(bld, offset_hi, offset_lo);
+   if (y && y_stride) {
+      LLVMValueRef y_offset = lp_build_mul(bld, y, y_stride);
+      offset = lp_build_add(bld, offset, y_offset);
    }
-   else {
-      offset = lp_build_mul(bld, x, x_stride);
-
-      if (y && y_stride) {
-         LLVMValueRef y_offset = lp_build_mul(bld, y, y_stride);
-         offset = lp_build_add(bld, offset, y_offset);
-      }
-
-      if (z && z_stride) {
-         LLVMValueRef z_offset = lp_build_mul(bld, z, z_stride);
-         offset = lp_build_add(bld, offset, z_offset);
-      }
+
+   if (z && z_stride) {
+      LLVMValueRef z_offset = lp_build_mul(bld, z, z_stride);
+      offset = lp_build_add(bld, offset, z_offset);
    }
 
    return offset;
index e2873763857a44f14d3ff43ad4a84140f4ab0d3b..8ceb20473d57099988f9c1c86b94fba4dbb8f1c8 100644 (file)
@@ -54,8 +54,14 @@ struct lp_build_context;
  */
 struct lp_sampler_static_state
 {
-   /* pipe_texture's state */
+   /* pipe_sampler_view's state */
    enum pipe_format format;
+   unsigned swizzle_r:3;
+   unsigned swizzle_g:3;
+   unsigned swizzle_b:3;
+   unsigned swizzle_a:3;
+
+   /* pipe_texture's state */
    unsigned target:3;
    unsigned pot_width:1;
    unsigned pot_height:1;
index c9b613e21c89d8243744f2a40b66345021104389..54c0ad7ce4397ec82a99e6e0f8e05d04a5af88d7 100644 (file)
@@ -185,6 +185,53 @@ texture_dims(enum pipe_texture_target tex)
 }
 
 
+static LLVMValueRef
+lp_build_swizzle_chan_soa(struct lp_type type,
+                          const LLVMValueRef *unswizzled,
+                          enum util_format_swizzle swizzle)
+{
+   switch (swizzle) {
+   case PIPE_SWIZZLE_RED:
+   case PIPE_SWIZZLE_GREEN:
+   case PIPE_SWIZZLE_BLUE:
+   case PIPE_SWIZZLE_ALPHA:
+      return unswizzled[swizzle];
+   case PIPE_SWIZZLE_ZERO:
+      return lp_build_zero(type);
+   case PIPE_SWIZZLE_ONE:
+      return lp_build_one(type);
+   default:
+      assert(0);
+      return lp_build_undef(type);
+   }
+}
+
+
+static void
+lp_build_swizzle_soa(struct lp_build_sample_context *bld,
+                     LLVMValueRef *texel)
+{
+   LLVMValueRef unswizzled[4];
+   unsigned char swizzles[4];
+   unsigned chan;
+
+   for (chan = 0; chan < 4; ++chan) {
+      unswizzled[chan] = texel[chan];
+   }
+
+   swizzles[0] = bld->static_state->swizzle_r;
+   swizzles[1] = bld->static_state->swizzle_g;
+   swizzles[2] = bld->static_state->swizzle_b;
+   swizzles[3] = bld->static_state->swizzle_a;
+
+   for (chan = 0; chan < 4; ++chan) {
+      unsigned swizzle = swizzles[chan];
+      texel[chan] = lp_build_swizzle_chan_soa(bld->texel_type,
+                                              unswizzled, swizzle);
+   }
+}
+
+
 
 /**
  * Generate code to fetch a texel from a texture at int coords (x, y, z).
@@ -278,6 +325,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,
@@ -285,6 +344,8 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld,
                            i, j,
                            texel);
 
+   lp_build_swizzle_soa(bld, texel);
+
    /*
     * Note: if we find an app which frequently samples the texture border
     * we might want to implement a true conditional here to avoid sampling
@@ -842,6 +903,7 @@ 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 width  scalar int texture width
  * \param height  scalar int texture height
  * \param depth  scalar int texture depth
@@ -851,6 +913,7 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
                       LLVMValueRef s,
                       LLVMValueRef t,
                       LLVMValueRef r,
+                      LLVMValueRef shader_lod_bias,
                       LLVMValueRef width,
                       LLVMValueRef height,
                       LLVMValueRef depth)
@@ -865,8 +928,8 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
    else {
       const int dims = texture_dims(bld->static_state->target);
       struct lp_build_context *float_bld = &bld->float_bld;
-      LLVMValueRef lod_bias = LLVMConstReal(LLVMFloatType(),
-                                            bld->static_state->lod_bias);
+      LLVMValueRef sampler_lod_bias = LLVMConstReal(LLVMFloatType(),
+                                                    bld->static_state->lod_bias);
       LLVMValueRef min_lod = LLVMConstReal(LLVMFloatType(),
                                            bld->static_state->min_lod);
       LLVMValueRef max_lod = LLVMConstReal(LLVMFloatType(),
@@ -940,8 +1003,14 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
       /* compute lod = log2(rho) */
       lod = lp_build_log2(float_bld, rho);
 
-      /* add lod bias */
-      lod = LLVMBuildAdd(bld->builder, lod, lod_bias, "LOD bias");
+      /* add sampler lod bias */
+      lod = LLVMBuildAdd(bld->builder, lod, sampler_lod_bias, "sampler 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");
 
       /* clamp lod */
       lod = lp_build_clamp(float_bld, lod, min_lod, max_lod);
@@ -1527,6 +1596,7 @@ lp_build_sample_general(struct lp_build_sample_context *bld,
                         LLVMValueRef s,
                         LLVMValueRef t,
                         LLVMValueRef r,
+                        LLVMValueRef lodbias,
                         LLVMValueRef width,
                         LLVMValueRef height,
                         LLVMValueRef depth,
@@ -1564,7 +1634,7 @@ 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, width, height, depth);
+      lod = lp_build_lod_selector(bld, s, t, r, lodbias, width, height, depth);
    }
 
    /*
@@ -1772,6 +1842,11 @@ lp_build_sample_2d_linear_aos(struct lp_build_sample_context *bld,
    LLVMValueRef unswizzled[4];
    LLVMValueRef stride;
 
+   assert(bld->static_state->target == PIPE_TEXTURE_2D);
+   assert(bld->static_state->min_img_filter == PIPE_TEX_FILTER_LINEAR);
+   assert(bld->static_state->mag_img_filter == PIPE_TEX_FILTER_LINEAR);
+   assert(bld->static_state->min_mip_filter == PIPE_TEX_MIPFILTER_NONE);
+
    lp_build_context_init(&i32, builder, lp_type_int_vec(32));
    lp_build_context_init(&h16, builder, lp_type_ufixed(16));
    lp_build_context_init(&u8n, builder, lp_type_unorm(8));
@@ -1945,6 +2020,8 @@ lp_build_sample_2d_linear_aos(struct lp_build_sample_context *bld,
    lp_build_format_swizzle_soa(bld->format_desc,
                                bld->texel_type, unswizzled,
                                texel);
+
+   lp_build_swizzle_soa(bld, texel);
 }
 
 
@@ -1983,6 +2060,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
@@ -2048,19 +2143,23 @@ 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,
+      lp_build_sample_general(&bld, unit, s, t, r, lodbias,
                               width, height, depth,
                               width_vec, height_vec, depth_vec,
                               row_stride_array, img_stride_array,
index 63b938bfa98421b4ac7e0a583aff3caad44e9cf3..2eac5da6c69e651de30f37bb7063a91a9e87937b 100644 (file)
@@ -39,6 +39,7 @@
 
 
 struct tgsi_token;
+struct tgsi_shader_info;
 struct lp_type;
 struct lp_build_context;
 struct lp_build_mask_context;
@@ -78,7 +79,8 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
                   const LLVMValueRef *pos,
                   const LLVMValueRef (*inputs)[4],
                   LLVMValueRef (*outputs)[4],
-                  struct lp_build_sampler_soa *sampler);
+                  struct lp_build_sampler_soa *sampler,
+                  struct tgsi_shader_info *info);
 
 
 #endif /* LP_BLD_TGSI_H */
index 44f8aec1bf0a6b12db86289551522d4ef5222bdb..d3c769e28b88ae2c9236aa57c58ed9feda79ce1a 100644 (file)
@@ -46,6 +46,7 @@
 #include "tgsi/tgsi_parse.h"
 #include "tgsi/tgsi_util.h"
 #include "tgsi/tgsi_exec.h"
+#include "tgsi/tgsi_scan.h"
 #include "lp_bld_type.h"
 #include "lp_bld_const.h"
 #include "lp_bld_arit.h"
@@ -125,6 +126,12 @@ struct lp_build_tgsi_soa_context
 
    LLVMValueRef immediates[LP_MAX_IMMEDIATES][NUM_CHANNELS];
    LLVMValueRef temps[LP_MAX_TEMPS][NUM_CHANNELS];
+   LLVMValueRef addr[LP_MAX_TEMPS][NUM_CHANNELS];
+
+   /* we allocate an array of temps if we have indirect
+    * addressing and then the temps above is unused */
+   LLVMValueRef temps_array;
+   boolean has_indirect_addressing;
 
    struct lp_build_mask_context *mask;
    struct lp_exec_mask exec_mask;
@@ -169,8 +176,7 @@ static void lp_exec_mask_init(struct lp_exec_mask *mask, struct lp_build_context
 static void lp_exec_mask_update(struct lp_exec_mask *mask)
 {
    if (mask->loop_stack_size) {
-      /*for loops we need to update the entire mask at
-       * runtime */
+      /*for loops we need to update the entire mask at runtime */
       LLVMValueRef tmp;
       assert(mask->break_mask);
       tmp = LLVMBuildAnd(mask->bld->builder,
@@ -232,6 +238,9 @@ static void lp_exec_bgnloop(struct lp_exec_mask *mask)
       mask->break_mask = LLVMConstAllOnes(mask->int_vec_type);
    if (mask->cond_stack_size == 0)
       mask->cond_mask = LLVMConstAllOnes(mask->int_vec_type);
+
+   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;
    mask->loop_block = lp_build_insert_new_block(mask->bld->builder, "bgnloop");
    LLVMBuildBr(mask->bld->builder, mask->loop_block);
@@ -246,7 +255,10 @@ static void lp_exec_break(struct lp_exec_mask *mask)
                                          mask->exec_mask,
                                          "break");
 
-   mask->break_stack[mask->break_stack_size++] = mask->break_mask;
+   /* 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,
@@ -263,7 +275,6 @@ static void lp_exec_continue(struct lp_exec_mask *mask)
                                          mask->exec_mask,
                                          "");
 
-   mask->cont_stack[mask->cont_stack_size++] = mask->cont_mask;
    if (mask->cont_stack_size > 1) {
       mask->cont_mask = LLVMBuildAnd(mask->bld->builder,
                                      mask->cont_mask,
@@ -299,17 +310,23 @@ static void lp_exec_endloop(struct lp_exec_mask *mask)
    LLVMPositionBuilderAtEnd(mask->bld->builder, endloop);
 
    mask->loop_block = mask->loop_stack[--mask->loop_stack_size];
-   /* pop the break mask */
+   /* pop the cont mask */
    if (mask->cont_stack_size) {
       mask->cont_mask = mask->cont_stack[--mask->cont_stack_size];
    }
+   /* pop the break mask */
    if (mask->break_stack_size) {
-      mask->break_mask = mask->cont_stack[--mask->break_stack_size];
+      mask->break_mask = mask->break_stack[--mask->break_stack_size];
    }
 
    lp_exec_mask_update(mask);
 }
 
+/* stores val into an address pointed to by dst.
+ * mask->exec_mask is used to figure out which bits of val
+ * should be stored into the address
+ * (0 means don't store this bit, 1 means do store).
+ */
 static void lp_exec_mask_store(struct lp_exec_mask *mask,
                                LLVMValueRef val,
                                LLVMValueRef dst)
@@ -347,6 +364,23 @@ emit_ddy(struct lp_build_tgsi_soa_context *bld,
    return lp_build_sub(&bld->base, src_top, src_bottom);
 }
 
+static LLVMValueRef
+get_temp_ptr(struct lp_build_tgsi_soa_context *bld,
+             unsigned index,
+             unsigned swizzle,
+             boolean is_indirect,
+             LLVMValueRef addr)
+{
+   if (!bld->has_indirect_addressing) {
+      return bld->temps[index][swizzle];
+   } else {
+      LLVMValueRef lindex =
+         LLVMConstInt(LLVMInt32Type(), index*4 + swizzle, 0);
+      if (is_indirect)
+         lindex = lp_build_add(&bld->base, lindex, addr);
+      return LLVMBuildGEP(bld->base.builder, bld->temps_array, &lindex, 1, "");
+   }
+}
 
 /**
  * Register fetch.
@@ -361,6 +395,7 @@ emit_fetch(
    const struct tgsi_full_src_register *reg = &inst->Src[index];
    unsigned swizzle = tgsi_util_get_full_src_register_swizzle( reg, chan_index );
    LLVMValueRef res;
+   LLVMValueRef addr;
 
    switch (swizzle) {
    case TGSI_SWIZZLE_X:
@@ -368,11 +403,34 @@ emit_fetch(
    case TGSI_SWIZZLE_Z:
    case TGSI_SWIZZLE_W:
 
+      if (reg->Register.Indirect) {
+         LLVMTypeRef int_vec_type = lp_build_int_vec_type(bld->base.type);
+         unsigned swizzle = tgsi_util_get_src_register_swizzle( &reg->Indirect, chan_index );
+         addr = LLVMBuildLoad(bld->base.builder,
+                              bld->addr[reg->Indirect.Index][swizzle],
+                              "");
+         /* for indexing we want integers */
+         addr = LLVMBuildFPToSI(bld->base.builder, addr,
+                                int_vec_type, "");
+         addr = LLVMBuildExtractElement(bld->base.builder,
+                                        addr, LLVMConstInt(LLVMInt32Type(), 0, 0),
+                                        "");
+         addr = lp_build_mul(&bld->base, addr, LLVMConstInt(LLVMInt32Type(), 4, 0));
+      }
+
       switch (reg->Register.File) {
       case TGSI_FILE_CONSTANT: {
          LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), reg->Register.Index*4 + swizzle, 0);
-         LLVMValueRef scalar_ptr = LLVMBuildGEP(bld->base.builder, bld->consts_ptr, &index, 1, "");
-         LLVMValueRef scalar = LLVMBuildLoad(bld->base.builder, scalar_ptr, "");
+         LLVMValueRef scalar, scalar_ptr;
+
+         if (reg->Register.Indirect) {
+            /*lp_build_printf(bld->base.builder,
+              "\taddr = %d\n", addr);*/
+            index = lp_build_add(&bld->base, index, addr);
+         }
+         scalar_ptr = LLVMBuildGEP(bld->base.builder, bld->consts_ptr, &index, 1, "");
+         scalar = LLVMBuildLoad(bld->base.builder, scalar_ptr, "");
+
          res = lp_build_broadcast_scalar(&bld->base, scalar);
          break;
       }
@@ -387,11 +445,16 @@ emit_fetch(
          assert(res);
          break;
 
-      case TGSI_FILE_TEMPORARY:
-         res = LLVMBuildLoad(bld->base.builder, bld->temps[reg->Register.Index][swizzle], "");
+      case TGSI_FILE_TEMPORARY: {
+         LLVMValueRef temp_ptr = get_temp_ptr(bld, reg->Register.Index,
+                                              swizzle,
+                                              reg->Register.Indirect,
+                                              addr);
+         res = LLVMBuildLoad(bld->base.builder, temp_ptr, "");
          if(!res)
             return bld->base.undef;
          break;
+      }
 
       default:
          assert( 0 );
@@ -469,6 +532,7 @@ emit_store(
    LLVMValueRef value)
 {
    const struct tgsi_full_dst_register *reg = &inst->Dst[index];
+   LLVMValueRef addr;
 
    switch( inst->Instruction.Saturate ) {
    case TGSI_SAT_NONE:
@@ -488,20 +552,39 @@ emit_store(
       assert(0);
    }
 
+   if (reg->Register.Indirect) {
+      LLVMTypeRef int_vec_type = lp_build_int_vec_type(bld->base.type);
+      unsigned swizzle = tgsi_util_get_src_register_swizzle( &reg->Indirect, chan_index );
+      addr = LLVMBuildLoad(bld->base.builder,
+                           bld->addr[reg->Indirect.Index][swizzle],
+                           "");
+      /* for indexing we want integers */
+      addr = LLVMBuildFPToSI(bld->base.builder, addr,
+                             int_vec_type, "");
+      addr = LLVMBuildExtractElement(bld->base.builder,
+                                     addr, LLVMConstInt(LLVMInt32Type(), 0, 0),
+                                     "");
+      addr = lp_build_mul(&bld->base, addr, LLVMConstInt(LLVMInt32Type(), 4, 0));
+   }
+
    switch( reg->Register.File ) {
    case TGSI_FILE_OUTPUT:
       lp_exec_mask_store(&bld->exec_mask, value,
                          bld->outputs[reg->Register.Index][chan_index]);
       break;
 
-   case TGSI_FILE_TEMPORARY:
-      lp_exec_mask_store(&bld->exec_mask, value,
-                         bld->temps[reg->Register.Index][chan_index]);
+   case TGSI_FILE_TEMPORARY: {
+      LLVMValueRef temp_ptr = get_temp_ptr(bld, reg->Register.Index,
+                                           chan_index,
+                                           reg->Register.Indirect,
+                                           addr);
+      lp_exec_mask_store(&bld->exec_mask, value, temp_ptr);
       break;
+   }
 
    case TGSI_FILE_ADDRESS:
-      /* FIXME */
-      assert(0);
+      lp_exec_mask_store(&bld->exec_mask, value,
+                         bld->addr[reg->Indirect.Index][chan_index]);
       break;
 
    case TGSI_FILE_PREDICATE:
@@ -656,62 +739,42 @@ emit_kilp(struct lp_build_tgsi_soa_context *bld,
    lp_build_mask_update(bld->mask, mask);
 }
 
-
-/**
- * Check if inst src/dest regs use indirect addressing into temporary
- * register file.
- */
-static boolean
-indirect_temp_reference(const struct tgsi_full_instruction *inst)
-{
-   uint i;
-   for (i = 0; i < inst->Instruction.NumSrcRegs; i++) {
-      const struct tgsi_full_src_register *reg = &inst->Src[i];
-      if (reg->Register.File == TGSI_FILE_TEMPORARY &&
-          reg->Register.Indirect)
-         return TRUE;
-   }
-   for (i = 0; i < inst->Instruction.NumDstRegs; i++) {
-      const struct tgsi_full_dst_register *reg = &inst->Dst[i];
-      if (reg->Register.File == TGSI_FILE_TEMPORARY &&
-          reg->Register.Indirect)
-         return TRUE;
-   }
-   return FALSE;
-}
-
 static int
 emit_declaration(
    struct lp_build_tgsi_soa_context *bld,
    const struct tgsi_full_declaration *decl)
 {
+   LLVMTypeRef vec_type = lp_build_vec_type(bld->base.type);
+
    unsigned first = decl->Range.First;
    unsigned last = decl->Range.Last;
    unsigned idx, i;
-   LLVMBasicBlockRef current_block =
-      LLVMGetInsertBlock(bld->base.builder);
-   LLVMBasicBlockRef first_block =
-      LLVMGetEntryBasicBlock(
-         LLVMGetBasicBlockParent(current_block));
-   LLVMValueRef first_inst =
-      LLVMGetFirstInstruction(first_block);
-
-   /* we want alloca's to be the first instruction
-    * in the function so we need to rewind the builder
-    * to the very beginning */
-   LLVMPositionBuilderBefore(bld->base.builder,
-                             first_inst);
 
    for (idx = first; idx <= last; ++idx) {
       switch (decl->Declaration.File) {
       case TGSI_FILE_TEMPORARY:
-         for (i = 0; i < NUM_CHANNELS; i++)
-            bld->temps[idx][i] = lp_build_alloca(&bld->base);
+         if (bld->has_indirect_addressing) {
+            LLVMValueRef val = LLVMConstInt(LLVMInt32Type(),
+                                            last*4 + 4, 0);
+            bld->temps_array = lp_build_array_alloca(bld->base.builder,
+                                                     vec_type, val, "");
+         } else {
+            for (i = 0; i < NUM_CHANNELS; i++)
+               bld->temps[idx][i] = lp_build_alloca(bld->base.builder,
+                                                    vec_type, "");
+         }
          break;
 
       case TGSI_FILE_OUTPUT:
          for (i = 0; i < NUM_CHANNELS; i++)
-            bld->outputs[idx][i] = lp_build_alloca(&bld->base);
+            bld->outputs[idx][i] = lp_build_alloca(bld->base.builder,
+                                                   vec_type, "");
+         break;
+
+      case TGSI_FILE_ADDRESS:
+         for (i = 0; i < NUM_CHANNELS; i++)
+            bld->addr[idx][i] = lp_build_alloca(bld->base.builder,
+                                                vec_type, "");
          break;
 
       default:
@@ -720,8 +783,6 @@ emit_declaration(
       }
    }
 
-   LLVMPositionBuilderAtEnd(bld->base.builder,
-                            current_block);
    return TRUE;
 }
 
@@ -747,10 +808,6 @@ emit_instruction(
    LLVMValueRef res;
    LLVMValueRef dst0[NUM_CHANNELS];
 
-   /* we can't handle indirect addressing into temp register file yet */
-   if (indirect_temp_reference(inst))
-      return FALSE;
-
    /*
     * Stores and write masks are handled in a general fashion after the long
     * instruction opcode switch statement.
@@ -770,17 +827,13 @@ emit_instruction(
    }
 
    switch (inst->Instruction.Opcode) {
-#if 0
    case TGSI_OPCODE_ARL:
-      /* FIXME */
       FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
          tmp0 = emit_fetch( bld, inst, 0, chan_index );
-         emit_flr(bld, 0, 0);
-         emit_f2it( bld, 0 );
+         tmp0 = lp_build_floor(&bld->base, tmp0);
          dst0[chan_index] = tmp0;
       }
       break;
-#endif
 
    case TGSI_OPCODE_MOV:
       FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
@@ -1350,17 +1403,13 @@ emit_instruction(
       return FALSE;
       break;
 
-#if 0
    case TGSI_OPCODE_ARR:
-      /* FIXME */
       FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
          tmp0 = emit_fetch( bld, inst, 0, chan_index );
-         emit_rnd( bld, 0, 0 );
-         emit_f2it( bld, 0 );
+         tmp0 = lp_build_round(&bld->base, tmp0);
          dst0[chan_index] = tmp0;
       }
       break;
-#endif
 
    case TGSI_OPCODE_BRA:
       /* deprecated */
@@ -1540,22 +1589,10 @@ emit_instruction(
       lp_exec_mask_cond_push(&bld->exec_mask, tmp0);
       break;
 
-   case TGSI_OPCODE_BGNFOR:
-      /* deprecated */
-      assert(0);
-      return FALSE;
-      break;
-
    case TGSI_OPCODE_BGNLOOP:
       lp_exec_bgnloop(&bld->exec_mask);
       break;
 
-   case TGSI_OPCODE_REP:
-      /* deprecated */
-      assert(0);
-      return FALSE;
-      break;
-
    case TGSI_OPCODE_ELSE:
       lp_exec_mask_cond_invert(&bld->exec_mask);
       break;
@@ -1564,22 +1601,10 @@ emit_instruction(
       lp_exec_mask_cond_pop(&bld->exec_mask);
       break;
 
-   case TGSI_OPCODE_ENDFOR:
-      /* deprecated */
-      assert(0);
-      return FALSE;
-      break;
-
    case TGSI_OPCODE_ENDLOOP:
       lp_exec_endloop(&bld->exec_mask);
       break;
 
-   case TGSI_OPCODE_ENDREP:
-      /* deprecated */
-      assert(0);
-      return FALSE;
-      break;
-
    case TGSI_OPCODE_PUSHA:
       /* deprecated? */
       assert(0);
@@ -1710,7 +1735,8 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
                   const LLVMValueRef *pos,
                   const LLVMValueRef (*inputs)[NUM_CHANNELS],
                   LLVMValueRef (*outputs)[NUM_CHANNELS],
-                  struct lp_build_sampler_soa *sampler)
+                  struct lp_build_sampler_soa *sampler,
+                  struct tgsi_shader_info *info)
 {
    struct lp_build_tgsi_soa_context bld;
    struct tgsi_parse_context parse;
@@ -1726,6 +1752,8 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
    bld.outputs = outputs;
    bld.consts_ptr = consts_ptr;
    bld.sampler = sampler;
+   bld.has_indirect_addressing = info->opcode_count[TGSI_OPCODE_ARR] > 0 ||
+                                 info->opcode_count[TGSI_OPCODE_ARL] > 0;
 
    lp_exec_mask_init(&bld.exec_mask, &bld.base);
 
@@ -1746,10 +1774,10 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
       case TGSI_TOKEN_TYPE_INSTRUCTION:
          {
             unsigned opcode = parse.FullToken.FullInstruction.Instruction.Opcode;
-            const struct tgsi_opcode_info *info = tgsi_get_opcode_info(opcode);
-            if (!emit_instruction( &bld, &parse.FullToken.FullInstruction, info ))
+            const struct tgsi_opcode_info *opcode_info = tgsi_get_opcode_info(opcode);
+            if (!emit_instruction( &bld, &parse.FullToken.FullInstruction, opcode_info ))
                _debug_printf("warning: failed to translate tgsi opcode %s to LLVM\n",
-                             info ? info->mnemonic : "<invalid>");
+                             opcode_info->mnemonic);
          }
 
          break;
index 07a4268fc0a04af3f2ed80011fe6001d98ea388f..c09e8a7a76fb26774b1574b61e96a437e8b78d13 100644 (file)
@@ -302,6 +302,7 @@ static INLINE void pipe_barrier_wait(pipe_barrier *barrier)
 typedef struct {
    unsigned count;
    unsigned waiters;
+   uint64_t sequence;
    pipe_mutex mutex;
    pipe_condvar condvar;
 } pipe_barrier;
@@ -310,6 +311,7 @@ static INLINE void pipe_barrier_init(pipe_barrier *barrier, unsigned count)
 {
    barrier->count = count;
    barrier->waiters = 0;
+   barrier->sequence = 0;
    pipe_mutex_init(barrier->mutex);
    pipe_condvar_init(barrier->condvar);
 }
@@ -329,9 +331,14 @@ static INLINE void pipe_barrier_wait(pipe_barrier *barrier)
    barrier->waiters++;
 
    if (barrier->waiters < barrier->count) {
-      pipe_condvar_wait(barrier->condvar, barrier->mutex);
+      uint64_t sequence = barrier->sequence;
+
+      do {
+         pipe_condvar_wait(barrier->condvar, barrier->mutex);
+      } while (sequence == barrier->sequence);
    } else {
       barrier->waiters = 0;
+      barrier->sequence++;
       pipe_condvar_broadcast(barrier->condvar);
    }
 
index 080fd4c7310dc53647aaf6d837ba40706ee97527..5d9eed925801227db7e8ebbccb295ce3e2ddd66c 100644 (file)
@@ -661,25 +661,6 @@ TGSI Instruction Specification
   TBD
 
 
-1.9.8  BGNFOR - Begin a For-Loop
-
-  dst.x = floor(src.x)
-  dst.y = floor(src.y)
-  dst.z = floor(src.z)
-
-  if (dst.y <= 0)
-    pc = [matching ENDFOR] + 1
-  endif
-
-  Note: The destination must be a loop register.
-        The source must be a constant register.
-
-
-1.9.9  REP - Repeat
-
-  TBD
-
-
 1.9.10  ELSE - Else
 
   TBD
@@ -690,23 +671,6 @@ TGSI Instruction Specification
   TBD
 
 
-1.9.12  ENDFOR - End a For-Loop
-
-  dst.x = dst.x + dst.z
-  dst.y = dst.y - 1.0
-
-  if (dst.y > 0)
-    pc = [matching BGNFOR instruction] + 1
-  endif
-
-  Note: The destination must be a loop register.
-
-
-1.9.13  ENDREP - End Repeat
-
-  TBD
-
-
 1.10  GL_NV_vertex_program3
 ---------------------------
 
index 57031419f8e250a34a7952e326cc0b6d2817111d..830002001897eb40227b45f4b0ebf0fb9a236812 100644 (file)
@@ -586,7 +586,6 @@ iter_instruction(
    /* update indentation */
    if (inst->Instruction.Opcode == TGSI_OPCODE_IF ||
        inst->Instruction.Opcode == TGSI_OPCODE_ELSE ||
-       inst->Instruction.Opcode == TGSI_OPCODE_BGNFOR ||
        inst->Instruction.Opcode == TGSI_OPCODE_BGNLOOP) {
       ctx->indentation += indent_spaces;
    }
index 11045e4ba2f7de98a74649678e5b084e4a1cddbf..82eac05dc4de0fff399cb591a35b8180b2835529 100644 (file)
@@ -3186,14 +3186,6 @@ exec_instruction(
       *pc = -1;
       break;
 
-   case TGSI_OPCODE_REP:
-      assert (0);
-      break;
-
-   case TGSI_OPCODE_ENDREP:
-       assert (0);
-       break;
-
    case TGSI_OPCODE_PUSHA:
       assert (0);
       break;
@@ -3258,29 +3250,6 @@ exec_instruction(
       emit_primitive(mach);
       break;
 
-   case TGSI_OPCODE_BGNFOR:
-      assert(mach->LoopCounterStackTop < TGSI_EXEC_MAX_LOOP_NESTING);
-      for (chan_index = 0; chan_index < 3; chan_index++) {
-         FETCH( &mach->LoopCounterStack[mach->LoopCounterStackTop].xyzw[chan_index], 0, chan_index );
-      }
-      ++mach->LoopCounterStackTop;
-      STORE(&mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_X], 0, CHAN_X);
-      /* update LoopMask */
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[0] <= 0.0f) {
-         mach->LoopMask &= ~0x1;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[1] <= 0.0f) {
-         mach->LoopMask &= ~0x2;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[2] <= 0.0f) {
-         mach->LoopMask &= ~0x4;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[3] <= 0.0f) {
-         mach->LoopMask &= ~0x8;
-      }
-      /* TODO: if mach->LoopMask == 0, jump to end of loop */
-      UPDATE_EXEC_MASK(mach);
-      /* fall-through (for now) */
    case TGSI_OPCODE_BGNLOOP:
       /* push LoopMask and ContMasks */
       assert(mach->LoopStackTop < TGSI_EXEC_MAX_LOOP_NESTING);
@@ -3295,56 +3264,6 @@ exec_instruction(
       mach->BreakType = TGSI_EXEC_BREAK_INSIDE_LOOP;
       break;
 
-   case TGSI_OPCODE_ENDFOR:
-      assert(mach->LoopCounterStackTop > 0);
-      micro_sub(&mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y], 
-                &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y],
-                &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C]);
-      /* update LoopMask */
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[0] <= 0.0f) {
-         mach->LoopMask &= ~0x1;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[1] <= 0.0f) {
-         mach->LoopMask &= ~0x2;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[2] <= 0.0f) {
-         mach->LoopMask &= ~0x4;
-      }
-      if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[3] <= 0.0f) {
-         mach->LoopMask &= ~0x8;
-      }
-      micro_add(&mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_X], 
-                &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_X], 
-                &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Z]);
-      assert(mach->LoopLabelStackTop > 0);
-      inst = mach->Instructions + mach->LoopLabelStack[mach->LoopLabelStackTop - 1];
-      STORE(&mach->LoopCounterStack[mach->LoopCounterStackTop].xyzw[CHAN_X], 0, CHAN_X);
-      /* Restore ContMask, but don't pop */
-      assert(mach->ContStackTop > 0);
-      mach->ContMask = mach->ContStack[mach->ContStackTop - 1];
-      UPDATE_EXEC_MASK(mach);
-      if (mach->ExecMask) {
-         /* repeat loop: jump to instruction just past BGNLOOP */
-         assert(mach->LoopLabelStackTop > 0);
-         *pc = mach->LoopLabelStack[mach->LoopLabelStackTop - 1] + 1;
-      }
-      else {
-         /* exit loop: pop LoopMask */
-         assert(mach->LoopStackTop > 0);
-         mach->LoopMask = mach->LoopStack[--mach->LoopStackTop];
-         /* pop ContMask */
-         assert(mach->ContStackTop > 0);
-         mach->ContMask = mach->ContStack[--mach->ContStackTop];
-         assert(mach->LoopLabelStackTop > 0);
-         --mach->LoopLabelStackTop;
-         assert(mach->LoopCounterStackTop > 0);
-         --mach->LoopCounterStackTop;
-
-         mach->BreakType = mach->BreakStack[--mach->BreakStackTop];
-      }
-      UPDATE_EXEC_MASK(mach);
-      break;
-      
    case TGSI_OPCODE_ENDLOOP:
       /* Restore ContMask, but don't pop */
       assert(mach->ContStackTop > 0);
index de0e09cdbae18fc3ca40db9c6ad7dff8fbec4d70..cfa2f631bd84430504a4a3d29b25b3c43bd2bf01 100644 (file)
@@ -106,12 +106,12 @@ static const struct tgsi_opcode_info opcode_info[TGSI_OPCODE_LAST] =
    { 1, 2, 1, 0, 0, 0, "TXL", TGSI_OPCODE_TXL },
    { 0, 0, 0, 0, 0, 0, "BRK", TGSI_OPCODE_BRK },
    { 0, 1, 0, 1, 0, 1, "IF", TGSI_OPCODE_IF },
-   { 1, 1, 0, 0, 0, 1, "BGNFOR", TGSI_OPCODE_BGNFOR },
-   { 0, 1, 0, 0, 0, 1, "REP", TGSI_OPCODE_REP },
+   { 1, 1, 0, 0, 0, 1, "", 75 },      /* removed */
+   { 0, 1, 0, 0, 0, 1, "", 76 },      /* removed */
    { 0, 0, 0, 1, 1, 1, "ELSE", TGSI_OPCODE_ELSE },
    { 0, 0, 0, 0, 1, 0, "ENDIF", TGSI_OPCODE_ENDIF },
-   { 1, 0, 0, 0, 1, 0, "ENDFOR", TGSI_OPCODE_ENDFOR },
-   { 0, 0, 0, 0, 1, 0, "ENDREP", TGSI_OPCODE_ENDREP },
+   { 1, 0, 0, 0, 1, 0, "", 79 },      /* removed */
+   { 0, 0, 0, 0, 1, 0, "", 80 },      /* removed */
    { 0, 1, 0, 0, 0, 0, "PUSHA", TGSI_OPCODE_PUSHA },
    { 1, 0, 0, 0, 0, 0, "POPA", TGSI_OPCODE_POPA },
    { 1, 1, 0, 0, 0, 0, "CEIL", TGSI_OPCODE_CEIL },
index e4af15c156fe8235883253d0956e64cb9b3f49b4..e472947507dad1c53eaa7d62398de3ac53c40f8b 100644 (file)
@@ -111,12 +111,8 @@ OP12(DP2)
 OP12_TEX(TXL)
 OP00(BRK)
 OP01_LBL(IF)
-OP11(BGNFOR)
-OP01(REP)
 OP00_LBL(ELSE)
 OP00(ENDIF)
-OP10(ENDFOR)
-OP00(ENDREP)
 OP01(PUSHA)
 OP10(POPA)
 OP11(CEIL)
index 371f690b2959bc58c0b8957b1b57162265ff483f..76b7564cc3666287a18e30e6d1224a3e99a49d9f 100644 (file)
@@ -346,25 +346,6 @@ iter_instruction(
       }
    }
 
-   switch (inst->Instruction.Opcode) {
-   case TGSI_OPCODE_BGNFOR:
-   case TGSI_OPCODE_ENDFOR:
-      if (inst->Dst[0].Register.File != TGSI_FILE_LOOP ||
-          inst->Dst[0].Register.Index != 0) {
-         report_error(ctx, "Destination register must be LOOP[0]");
-      }
-      break;
-   }
-
-   switch (inst->Instruction.Opcode) {
-   case TGSI_OPCODE_BGNFOR:
-      if (inst->Src[0].Register.File != TGSI_FILE_CONSTANT &&
-          inst->Src[0].Register.File != TGSI_FILE_IMMEDIATE) {
-         report_error(ctx, "Source register file must be either CONST or IMM");
-      }
-      break;
-   }
-
    ctx->num_instructions++;
 
    return TRUE;
index a85cc4659e07d5a8dd73be172914d3d04ce59843..1071298b497a880e96b37ccb6046444bd1244b91 100644 (file)
@@ -2533,14 +2533,6 @@ emit_instruction(
       return 0;
       break;
 
-   case TGSI_OPCODE_BGNFOR:
-      return 0;
-      break;
-
-   case TGSI_OPCODE_REP:
-      return 0;
-      break;
-
    case TGSI_OPCODE_ELSE:
       return 0;
       break;
@@ -2549,14 +2541,6 @@ emit_instruction(
       return 0;
       break;
 
-   case TGSI_OPCODE_ENDFOR:
-      return 0;
-      break;
-
-   case TGSI_OPCODE_ENDREP:
-      return 0;
-      break;
-
    case TGSI_OPCODE_PUSHA:
       return 0;
       break;
index 54ed2c1a4bebb67e404fb6a158f9beda9c369f0f..edd95e078823560c80455febde1864d089a01ab6 100644 (file)
@@ -76,7 +76,8 @@ struct translate {
    void (*set_buffer)( struct translate *,
                       unsigned i,
                       const void *ptr,
-                      unsigned stride );
+                      unsigned stride,
+                      unsigned max_index );
 
    void (PIPE_CDECL *run_elts)( struct translate *,
                                 const unsigned *elts,
index c3ec9ae3f4b611b9d048432c2557bff6c01e0f68..a9272fbb491d4b20f49bfa4bf7a82483bf7ec495 100644 (file)
@@ -31,6 +31,7 @@
   */
 
 #include "util/u_memory.h"
+#include "util/u_math.h"
 #include "pipe/p_state.h"
 #include "translate.h"
 
@@ -58,6 +59,7 @@ struct translate_generic {
       
       char *input_ptr;
       unsigned input_stride;
+      unsigned max_index;
 
    } attrib[PIPE_MAX_ATTRIBS];
 
@@ -588,19 +590,22 @@ static void PIPE_CDECL generic_run_elts( struct translate *translate,
       for (attr = 0; attr < nr_attrs; attr++) {
         float data[4];
          const char *src;
+         unsigned index;
 
         char *dst = (vert + 
                      tg->attrib[attr].output_offset);
 
          if (tg->attrib[attr].instance_divisor) {
-            src = tg->attrib[attr].input_ptr +
-                  tg->attrib[attr].input_stride *
-                  (instance_id / tg->attrib[attr].instance_divisor);
+            index = instance_id / tg->attrib[attr].instance_divisor;
          } else {
-            src = tg->attrib[attr].input_ptr +
-                  tg->attrib[attr].input_stride * elt;
+            index = elt;
          }
 
+         index = MIN2(index, tg->attrib[attr].max_index);
+
+         src = tg->attrib[attr].input_ptr +
+               tg->attrib[attr].input_stride * index;
+
         tg->attrib[attr].fetch( src, data );
 
          if (0) debug_printf("vert %d/%d attr %d: %f %f %f %f\n",
@@ -670,7 +675,8 @@ static void PIPE_CDECL generic_run( struct translate *translate,
 static void generic_set_buffer( struct translate *translate,
                                unsigned buf,
                                const void *ptr,
-                               unsigned stride )
+                               unsigned stride,
+                               unsigned max_index )
 {
    struct translate_generic *tg = translate_generic(translate);
    unsigned i;
@@ -680,6 +686,7 @@ static void generic_set_buffer( struct translate *translate,
         tg->attrib[i].input_ptr = ((char *)ptr +
                                    tg->attrib[i].input_offset);
         tg->attrib[i].input_stride = stride;
+         tg->attrib[i].max_index = max_index;
       }
    }
 }
index c13e7427387985418d8d851cacfde2d2385d830d..ef3aa674a341eee4c80a572e476bae0ce969691b 100644 (file)
@@ -61,6 +61,7 @@ typedef void (PIPE_CDECL *run_elts_func)( struct translate *translate,
 struct translate_buffer {
    const void *base_ptr;
    unsigned stride;
+   unsigned max_index;
 };
 
 struct translate_buffer_varient {
@@ -423,6 +424,11 @@ static boolean init_inputs( struct translate_sse *p,
          } else {
             x86_mov(p->func, tmp_EAX, elt);
          }
+
+         /*
+          * TODO: Respect translate_buffer::max_index.
+          */
+
          x86_imul(p->func, tmp_EAX, buf_stride);
          x86_add(p->func, tmp_EAX, buf_base_ptr);
 
@@ -666,13 +672,15 @@ static boolean build_vertex_emit( struct translate_sse *p,
 static void translate_sse_set_buffer( struct translate *translate,
                                unsigned buf,
                                const void *ptr,
-                               unsigned stride )
+                               unsigned stride,
+                               unsigned max_index )
 {
    struct translate_sse *p = (struct translate_sse *)translate;
 
    if (buf < p->nr_buffers) {
       p->buffer[buf].base_ptr = (char *)ptr;
       p->buffer[buf].stride = stride;
+      p->buffer[buf].max_index = max_index;
    }
 
    if (0) debug_printf("%s %d/%d: %p %d\n", 
diff --git a/src/gallium/auxiliary/util/u_caps.c b/src/gallium/auxiliary/util/u_caps.c
new file mode 100644 (file)
index 0000000..c7c1e83
--- /dev/null
@@ -0,0 +1,245 @@
+/**************************************************************************
+ *
+ * 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 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.
+ *
+ **************************************************************************/
+
+#include "pipe/p_screen.h"
+#include "util/u_format.h"
+#include "util/u_debug.h"
+#include "u_caps.h"
+
+/**
+ * Iterates over a list of caps checks as defined in u_caps.h. Should
+ * all checks pass returns TRUE and out is set to the last element of
+ * the list (TERMINATE). Should any check fail returns FALSE and set
+ * out to the index of the start of the first failing check.
+ */
+boolean
+util_check_caps_out(struct pipe_screen *screen, const unsigned *list, int *out)
+{
+   int i, tmpi;
+   float tmpf;
+
+   for (i = 0; list[i];) {
+      switch(list[i++]) {
+      case UTIL_CAPS_CHECK_CAP:
+         if (!screen->get_param(screen, list[i++])) {
+            *out = i - 2;
+            return FALSE;
+         }
+         break;
+      case UTIL_CAPS_CHECK_INT:
+         tmpi = screen->get_param(screen, list[i++]);
+         if (tmpi < (int)list[i++]) {
+            *out = i - 3;
+            return FALSE;
+         }
+         break;
+      case UTIL_CAPS_CHECK_FLOAT:
+         tmpf = screen->get_paramf(screen, list[i++]);
+         if (tmpf < (float)list[i++]) {
+            *out = i - 3;
+            return FALSE;
+         }
+         break;
+      case UTIL_CAPS_CHECK_FORMAT:
+         if (!screen->is_format_supported(screen,
+                                          list[i++],
+                                          PIPE_TEXTURE_2D,
+                                          PIPE_BIND_SAMPLER_VIEW,
+                                          0)) {
+            *out = i - 2;
+            return FALSE;
+         }
+         break;
+      case UTIL_CAPS_CHECK_UNIMPLEMENTED:
+         *out = i - 1;
+         return FALSE;
+      default:
+         assert(!"Unsupported check");
+         return FALSE;
+      }
+   }
+
+   *out = i;
+   return TRUE;
+}
+
+/**
+ * Iterates over a list of caps checks as defined in u_caps.h.
+ * Returns TRUE if all caps checks pass returns FALSE otherwise.
+ */
+boolean
+util_check_caps(struct pipe_screen *screen, const unsigned *list)
+{
+   int out;
+   return util_check_caps_out(screen, list, &out);
+}
+
+
+/*
+ * Below follows some demo lists.
+ *
+ * None of these lists are exhausting lists of what is
+ * actually needed to support said API and more here for
+ * as example on how to uses the above functions. Especially
+ * for DX10 and DX11 where Gallium is missing features.
+ */
+
+/* DX 9_1 */
+static unsigned caps_dx_9_1[] = {
+   UTIL_CHECK_INT(MAX_RENDER_TARGETS, 1),
+   UTIL_CHECK_INT(MAX_TEXTURE_2D_LEVELS, 12),    /* 2048 */
+   UTIL_CHECK_INT(MAX_TEXTURE_3D_LEVELS, 9),     /* 256 */
+   UTIL_CHECK_INT(MAX_TEXTURE_CUBE_LEVELS, 10),  /* 512 */
+   UTIL_CHECK_FLOAT(MAX_TEXTURE_ANISOTROPY, 2),
+   UTIL_CHECK_TERMINATE
+};
+
+/* DX 9_2 */
+static unsigned caps_dx_9_2[] = {
+   UTIL_CHECK_CAP(OCCLUSION_QUERY),
+   UTIL_CHECK_CAP(BLEND_EQUATION_SEPARATE),
+   UTIL_CHECK_INT(MAX_RENDER_TARGETS, 1),
+   UTIL_CHECK_INT(MAX_TEXTURE_2D_LEVELS, 12),    /* 2048 */
+   UTIL_CHECK_INT(MAX_TEXTURE_3D_LEVELS, 9),     /* 256 */
+   UTIL_CHECK_INT(MAX_TEXTURE_CUBE_LEVELS, 10),  /* 512 */
+   UTIL_CHECK_FLOAT(MAX_TEXTURE_ANISOTROPY, 16),
+   UTIL_CHECK_TERMINATE
+};
+
+/* DX 9_3 */
+static unsigned caps_dx_9_3[] = {
+   UTIL_CHECK_CAP(SM3),
+ //UTIL_CHECK_CAP(INSTANCING),
+   UTIL_CHECK_CAP(OCCLUSION_QUERY),
+   UTIL_CHECK_INT(MAX_RENDER_TARGETS, 4),
+   UTIL_CHECK_INT(MAX_TEXTURE_2D_LEVELS, 13),    /* 4096 */
+   UTIL_CHECK_INT(MAX_TEXTURE_3D_LEVELS, 9),     /* 256 */
+   UTIL_CHECK_INT(MAX_TEXTURE_CUBE_LEVELS, 10),  /* 512 */
+   UTIL_CHECK_FLOAT(MAX_TEXTURE_ANISOTROPY, 16),
+   UTIL_CHECK_TERMINATE
+};
+
+/* DX 10 */
+static unsigned caps_dx_10[] = {
+   UTIL_CHECK_CAP(SM3),
+ //UTIL_CHECK_CAP(INSTANCING),
+   UTIL_CHECK_CAP(OCCLUSION_QUERY),
+   UTIL_CHECK_INT(MAX_RENDER_TARGETS, 8),
+   UTIL_CHECK_INT(MAX_TEXTURE_2D_LEVELS, 14),    /* 8192 */
+   UTIL_CHECK_INT(MAX_TEXTURE_3D_LEVELS, 12),    /* 2048 */
+   UTIL_CHECK_INT(MAX_TEXTURE_CUBE_LEVELS, 14),  /* 8192 */
+   UTIL_CHECK_FLOAT(MAX_TEXTURE_ANISOTROPY, 16),
+   UTIL_CHECK_UNIMPLEMENTED, /* XXX Unimplemented features in Gallium */
+   UTIL_CHECK_TERMINATE
+};
+
+/* DX11 */
+static unsigned caps_dx_11[] = {
+   UTIL_CHECK_CAP(SM3),
+ //UTIL_CHECK_CAP(INSTANCING),
+   UTIL_CHECK_CAP(OCCLUSION_QUERY),
+   UTIL_CHECK_INT(MAX_RENDER_TARGETS, 8),
+   UTIL_CHECK_INT(MAX_TEXTURE_2D_LEVELS, 14),    /* 16384 */
+   UTIL_CHECK_INT(MAX_TEXTURE_3D_LEVELS, 12),    /* 2048 */
+   UTIL_CHECK_INT(MAX_TEXTURE_CUBE_LEVELS, 14),  /* 16384 */
+   UTIL_CHECK_FLOAT(MAX_TEXTURE_ANISOTROPY, 16),
+   UTIL_CHECK_FORMAT(B8G8R8A8_UNORM),
+   UTIL_CHECK_UNIMPLEMENTED, /* XXX Unimplemented features in Gallium */
+   UTIL_CHECK_TERMINATE
+};
+
+/* OpenGL 2.1 */
+static unsigned caps_opengl_2_1[] = {
+   UTIL_CHECK_CAP(GLSL),
+   UTIL_CHECK_CAP(OCCLUSION_QUERY),
+   UTIL_CHECK_CAP(TWO_SIDED_STENCIL),
+   UTIL_CHECK_CAP(BLEND_EQUATION_SEPARATE),
+   UTIL_CHECK_INT(MAX_RENDER_TARGETS, 2),
+   UTIL_CHECK_TERMINATE
+};
+
+/* OpenGL 3.0 */
+/* UTIL_CHECK_INT(MAX_RENDER_TARGETS, 8), */
+
+
+/**
+ * Demo function which checks against theoretical caps needed for different APIs.
+ */
+void util_caps_demo_print(struct pipe_screen *screen)
+{
+   struct {
+      char* name;
+      unsigned *list;
+   } list[] = {
+      {"DX 9.1", caps_dx_9_1},
+      {"DX 9.2", caps_dx_9_2},
+      {"DX 9.3", caps_dx_9_3},
+      {"DX 10", caps_dx_10},
+      {"DX 11", caps_dx_11},
+      {"OpenGL 2.1", caps_opengl_2_1},
+/*    {"OpenGL 3.0", caps_opengl_3_0},*/
+      {NULL, NULL}
+   };
+   int i, out = 0;
+
+   for (i = 0; list[i].name; i++) {
+      if (util_check_caps_out(screen, list[i].list, &out)) {
+         debug_printf("%s: %s yes\n", __FUNCTION__, list[i].name);
+         continue;
+      }
+      switch (list[i].list[out]) {
+      case UTIL_CAPS_CHECK_CAP:
+         debug_printf("%s: %s no (cap %u not supported)\n", __FUNCTION__,
+                      list[i].name,
+                      list[i].list[out + 1]);
+         break;
+      case UTIL_CAPS_CHECK_INT:
+         debug_printf("%s: %s no (cap %u less then %u)\n", __FUNCTION__,
+                      list[i].name,
+                      list[i].list[out + 1],
+                      list[i].list[out + 2]);
+         break;
+      case UTIL_CAPS_CHECK_FLOAT:
+         debug_printf("%s: %s no (cap %u less then %f)\n", __FUNCTION__,
+                      list[i].name,
+                      list[i].list[out + 1],
+                      (double)(int)list[i].list[out + 2]);
+         break;
+      case UTIL_CAPS_CHECK_FORMAT:
+         debug_printf("%s: %s no (format %s not supported)\n", __FUNCTION__,
+                      list[i].name,
+                      util_format_name(list[i].list[out + 1]) + 12);
+         break;
+      case UTIL_CAPS_CHECK_UNIMPLEMENTED:
+         debug_printf("%s: %s no (not implemented in gallium or state tracker)\n",
+                      __FUNCTION__, list[i].name);
+         break;
+      default:
+            assert(!"Unsupported check");
+      }
+   }
+}
diff --git a/src/gallium/auxiliary/util/u_caps.h b/src/gallium/auxiliary/util/u_caps.h
new file mode 100644 (file)
index 0000000..b1074f9
--- /dev/null
@@ -0,0 +1,67 @@
+/**************************************************************************
+ *
+ * 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 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_CAPS_H
+#define U_CAPS_H
+
+#include "pipe/p_compiler.h"
+
+struct pipe_screen;
+
+enum u_caps_check_enum {
+   UTIL_CAPS_CHECK_TERMINATE = 0,
+   UTIL_CAPS_CHECK_CAP,
+   UTIL_CAPS_CHECK_INT,
+   UTIL_CAPS_CHECK_FLOAT,
+   UTIL_CAPS_CHECK_FORMAT,
+   UTIL_CAPS_CHECK_UNIMPLEMENTED,
+};
+
+#define UTIL_CHECK_CAP(cap) \
+   UTIL_CAPS_CHECK_CAP, PIPE_CAP_##cap
+
+#define UTIL_CHECK_INT(cap, higher) \
+   UTIL_CAPS_CHECK_INT, PIPE_CAP_##cap, (unsigned)(higher)
+
+/* Floats currently lose precision */
+#define UTIL_CHECK_FLOAT(cap, higher) \
+   UTIL_CAPS_CHECK_FLOAT, PIPE_CAP_##cap, (unsigned)(int)(higher)
+
+#define UTIL_CHECK_FORMAT(format) \
+   UTIL_CAPS_CHECK_FORMAT, PIPE_FORMAT_##format
+
+#define UTIL_CHECK_UNIMPLEMENTED \
+   UTIL_CAPS_CHECK_UNIMPLEMENTED
+
+#define UTIL_CHECK_TERMINATE \
+   UTIL_CAPS_CHECK_TERMINATE
+
+boolean util_check_caps(struct pipe_screen *screen, const unsigned *list);
+boolean util_check_caps_out(struct pipe_screen *screen, const unsigned *list, int *out);
+void util_caps_demo_print(struct pipe_screen *screen);
+
+#endif
index dd044973f96aa03733875c113ce55ec57bfc1c64..0de38e791d6661a43d137abbfabbe62aa2de8894 100644 (file)
@@ -74,6 +74,24 @@ void debug_print_blob( const char *name,
 #endif
 
 
+static boolean
+debug_get_option_should_print(void)
+{
+   static boolean first = TRUE;
+   static boolean value = FALSE;
+
+   if (!first)
+      return value;
+
+   /* Oh hey this will call into this function,
+    * but its cool since we set first to false
+    */
+   first = FALSE;
+   value = debug_get_bool_option("GALLIUM_PRINT_OPTIONS", TRUE);
+   /* XXX should we print this option? Currently it wont */
+   return value;
+}
+
 const char *
 debug_get_option(const char *name, const char *dfault)
 {
@@ -82,8 +100,9 @@ debug_get_option(const char *name, const char *dfault)
    result = os_get_option(name);
    if(!result)
       result = dfault;
-      
-   debug_printf("%s: %s = %s\n", __FUNCTION__, name, result ? result : "(null)");
+
+   if (debug_get_option_should_print())
+      debug_printf("%s: %s = %s\n", __FUNCTION__, name, result ? result : "(null)");
    
    return result;
 }
@@ -109,7 +128,8 @@ debug_get_bool_option(const char *name, boolean dfault)
    else
       result = TRUE;
 
-   debug_printf("%s: %s = %s\n", __FUNCTION__, name, result ? "TRUE" : "FALSE");
+   if (debug_get_option_should_print())
+      debug_printf("%s: %s = %s\n", __FUNCTION__, name, result ? "TRUE" : "FALSE");
    
    return result;
 }
@@ -142,8 +162,9 @@ debug_get_num_option(const char *name, long dfault)
       }
       result *= sign;
    }
-   
-   debug_printf("%s: %s = %li\n", __FUNCTION__, name, result);
+
+   if (debug_get_option_should_print())
+      debug_printf("%s: %s = %li\n", __FUNCTION__, name, result);
 
    return result;
 }
@@ -176,11 +197,12 @@ debug_get_flags_option(const char *name,
       }
    }
 
-   if (str) {
-      debug_printf("%s: %s = 0x%lx (%s)\n", __FUNCTION__, name, result, str);
-   }
-   else {
-      debug_printf("%s: %s = 0x%lx\n", __FUNCTION__, name, result);
+   if (debug_get_option_should_print()) {
+      if (str) {
+         debug_printf("%s: %s = 0x%lx (%s)\n", __FUNCTION__, name, result, str);
+      } else {
+         debug_printf("%s: %s = 0x%lx\n", __FUNCTION__, name, result);
+      }
    }
 
    return result;
index b6d0b508e30abb875467d29fe6037bb9e2d08ad0..e8ff2773e697abcc0f4a59d2ace6c9933a2e9741 100644 (file)
@@ -303,6 +303,45 @@ debug_get_flags_option(const char *name,
                        const struct debug_named_value *flags,
                        unsigned long dfault);
 
+#define DEBUG_GET_ONCE_BOOL_OPTION(sufix, name, dfault) \
+static boolean \
+debug_get_option_ ## sufix (void) \
+{ \
+   static boolean first = TRUE; \
+   static boolean value; \
+   if (first) { \
+      first = FALSE; \
+      value = debug_get_bool_option(name, dfault); \
+   } \
+   return value; \
+}
+
+#define DEBUG_GET_ONCE_NUM_OPTION(sufix, name, dfault) \
+static long \
+debug_get_option_ ## sufix (void) \
+{ \
+   static boolean first = TRUE; \
+   static long value; \
+   if (first) { \
+      first = FALSE; \
+      value = debug_get_num_option(name, dfault); \
+   } \
+   return value; \
+}
+
+#define DEBUG_GET_ONCE_FLAGS_OPTION(sufix, name, flags, dfault) \
+static unsigned long \
+debug_get_option_ ## sufix (void) \
+{ \
+   static boolean first = TRUE; \
+   static unsigned long value; \
+   if (first) { \
+      first = FALSE; \
+      value = debug_get_flags_option(name, flags, dfault); \
+   } \
+   return value; \
+}
+
 
 unsigned long
 debug_memory_begin(void);
index c134f13e908043f0a6a25351c11770aa1b504f68..2ce643e90cdf02abc0a8bada4f99085a2d72370b 100644 (file)
@@ -656,12 +656,12 @@ util_dump_transfer(struct os_stream *stream, const struct pipe_transfer *state)
    util_dump_struct_begin(stream, "pipe_transfer");
 
    util_dump_member(stream, ptr, state, resource);
-//   util_dump_member(stream, uint, state, box);
+   /*util_dump_member(stream, uint, state, box);*/
 
    util_dump_member(stream, uint, state, stride);
    util_dump_member(stream, uint, state, slice_stride);
 
-//   util_dump_member(stream, ptr, state, data);
+   /*util_dump_member(stream, ptr, state, data);*/
 
    util_dump_struct_end(stream);
 }
index 5e3dc694be688dfaf8b01700f78edb5decd11fca..fb6ade5c06b5f1b7739b9b0ae1439f4df8a51a5c 100644 (file)
@@ -192,6 +192,7 @@ struct util_format_description
 
    /**
     * Unpack pixel blocks to R8G8B8A8_UNORM.
+    * Note: strides are in bytes.
     *
     * Only defined for non-depth-stencil formats.
     */
@@ -202,6 +203,7 @@ struct util_format_description
 
    /**
     * Pack pixel blocks from R8G8B8A8_UNORM.
+    * Note: strides are in bytes.
     *
     * Only defined for non-depth-stencil formats.
     */
@@ -212,6 +214,7 @@ struct util_format_description
 
    /**
     * Unpack pixel blocks to R32G32B32A32_FLOAT.
+    * Note: strides are in bytes.
     *
     * Only defined for non-depth-stencil formats.
     */
@@ -222,6 +225,7 @@ struct util_format_description
 
    /**
     * Pack pixel blocks from R32G32B32A32_FLOAT.
+    * Note: strides are in bytes.
     *
     * Only defined for non-depth-stencil formats.
     */
@@ -242,6 +246,7 @@ struct util_format_description
 
    /**
     * Unpack pixels to Z32_UNORM.
+    * Note: strides are in bytes.
     *
     * Only defined for depth formats.
     */
@@ -252,6 +257,7 @@ struct util_format_description
 
    /**
     * Pack pixels from Z32_FLOAT.
+    * Note: strides are in bytes.
     *
     * Only defined for depth formats.
     */
@@ -262,6 +268,7 @@ struct util_format_description
 
    /**
     * Unpack pixels to Z32_FLOAT.
+    * Note: strides are in bytes.
     *
     * Only defined for depth formats.
     */
@@ -272,6 +279,7 @@ struct util_format_description
 
    /**
     * Pack pixels from Z32_FLOAT.
+    * Note: strides are in bytes.
     *
     * Only defined for depth formats.
     */
@@ -282,6 +290,7 @@ struct util_format_description
 
    /**
     * Unpack pixels to S8_USCALED.
+    * Note: strides are in bytes.
     *
     * Only defined for stencil formats.
     */
@@ -292,6 +301,7 @@ struct util_format_description
 
    /**
     * Pack pixels from S8_USCALED.
+    * Note: strides are in bytes.
     *
     * Only defined for stencil formats.
     */
@@ -322,7 +332,7 @@ util_format_name(enum pipe_format format)
 
    assert(desc);
    if (!desc) {
-      return "???";
+      return "PIPE_FORMAT_???";
    }
 
    return desc->name;
index 79dee2b42388acc832598c6ca92a18eac154f837..5b279b8fe26b7a1df252161e00ccb62c581d40e6 100644 (file)
@@ -233,108 +233,80 @@ util_format_dxt5_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned
  * Block decompression.
  */
 
-void
-util_format_dxt1_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
-{
+static INLINE void
+util_format_dxtn_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+                                        const uint8_t *src_row, unsigned src_stride,
+                                        unsigned width, unsigned height,
+                                        util_format_dxtn_fetch_t fetch,
+                                        unsigned block_size)
+{
+   const unsigned bw = 4, bh = 4, comps = 4;
    unsigned x, y, i, j;
-   for(y = 0; y < height; y += 4) {
+   for(y = 0; y < height; y += bh) {
       const uint8_t *src = src_row;
-      for(x = 0; x < width; x += 4) {
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
-               uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
-               util_format_dxt1_rgb_fetch(0, src, i, j, dst);
+      for(x = 0; x < width; x += bw) {
+         for(j = 0; j < bh; ++j) {
+            for(i = 0; i < bw; ++i) {
+               uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*comps;
+               fetch(0, src, i, j, dst);
             }
          }
-         src += 8;
+         src += block_size;
       }
       src_row += src_stride;
    }
 }
 
 void
-util_format_dxt1_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+                                        const uint8_t *src_row, unsigned src_stride,
+                                        unsigned width, unsigned height)
 {
-   unsigned x, y, i, j;
-   for(y = 0; y < height; y += 4) {
-      const uint8_t *src = src_row;
-      for(x = 0; x < width; x += 4) {
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
-               uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
-               util_format_dxt1_rgba_fetch(0, src, i, j, dst);
-            }
-         }
-         src += 8;
-      }
-      src_row += src_stride;
-   }
+   util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
+                                           src_row, src_stride,
+                                           width, height,
+                                           util_format_dxt1_rgb_fetch, 8);
 }
 
 void
-util_format_dxt3_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+                                         const uint8_t *src_row, unsigned src_stride,
+                                         unsigned width, unsigned height)
 {
-   unsigned x, y, i, j;
-   for(y = 0; y < height; y += 4) {
-      const uint8_t *src = src_row;
-      for(x = 0; x < width; x += 4) {
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
-               uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
-               util_format_dxt3_rgba_fetch(0, src, i, j, dst);
-            }
-         }
-         src += 16;
-      }
-      src_row += src_stride;
-   }
+   util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
+                                           src_row, src_stride,
+                                           width, height,
+                                           util_format_dxt1_rgba_fetch, 8);
 }
 
 void
-util_format_dxt5_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt3_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+                                         const uint8_t *src_row, unsigned src_stride,
+                                         unsigned width, unsigned height)
 {
-   unsigned x, y, i, j;
-   for(y = 0; y < height; y += 4) {
-      const uint8_t *src = src_row;
-      for(x = 0; x < width; x += 4) {
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
-               uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
-               util_format_dxt5_rgba_fetch(0, src, i, j, dst);
-            }
-         }
-         src += 16;
-      }
-      src_row += src_stride;
-   }
+   util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
+                                           src_row, src_stride,
+                                           width, height,
+                                           util_format_dxt3_rgba_fetch, 16);
 }
 
 void
-util_format_dxt1_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt5_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+                                         const uint8_t *src_row, unsigned src_stride,
+                                         unsigned width, unsigned height)
 {
-   unsigned x, y, i, j;
-   for(y = 0; y < height; y += 4) {
-      const uint8_t *src = src_row;
-      for(x = 0; x < width; x += 4) {
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
-               float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
-               uint8_t tmp[4];
-               util_format_dxt1_rgb_fetch(0, src, i, j, tmp);
-               dst[0] = ubyte_to_float(tmp[0]);
-               dst[1] = ubyte_to_float(tmp[1]);
-               dst[2] = ubyte_to_float(tmp[2]);
-               dst[3] = 1.0;
-            }
-         }
-         src += 8;
-      }
-      src_row += src_stride;
-   }
+   util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
+                                           src_row, src_stride,
+                                           width, height,
+                                           util_format_dxt5_rgba_fetch, 16);
 }
 
-void
-util_format_dxt1_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+static INLINE void
+util_format_dxtn_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+                                       const uint8_t *src_row, unsigned src_stride,
+                                       unsigned width, unsigned height,
+                                       util_format_dxtn_fetch_t fetch,
+                                       unsigned block_size)
 {
    unsigned x, y, i, j;
    for(y = 0; y < height; y += 4) {
@@ -344,65 +316,61 @@ util_format_dxt1_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, con
             for(i = 0; i < 4; ++i) {
                float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
                uint8_t tmp[4];
-               util_format_dxt1_rgba_fetch(0, src, i, j, tmp);
+               fetch(0, src, i, j, tmp);
                dst[0] = ubyte_to_float(tmp[0]);
                dst[1] = ubyte_to_float(tmp[1]);
                dst[2] = ubyte_to_float(tmp[2]);
                dst[3] = ubyte_to_float(tmp[3]);
             }
          }
-         src += 8;
+         src += block_size;
       }
       src_row += src_stride;
    }
 }
 
 void
-util_format_dxt3_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+                                       const uint8_t *src_row, unsigned src_stride,
+                                       unsigned width, unsigned height)
 {
-   unsigned x, y, i, j;
-   for(y = 0; y < height; y += 4) {
-      const uint8_t *src = src_row;
-      for(x = 0; x < width; x += 4) {
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
-               float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
-               uint8_t tmp[4];
-               util_format_dxt3_rgba_fetch(0, src, i, j, tmp);
-               dst[0] = ubyte_to_float(tmp[0]);
-               dst[1] = ubyte_to_float(tmp[1]);
-               dst[2] = ubyte_to_float(tmp[2]);
-               dst[3] = ubyte_to_float(tmp[3]);
-            }
-         }
-         src += 16;
-      }
-      src_row += src_stride;
-   }
+   util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
+                                          src_row, src_stride,
+                                          width, height,
+                                          util_format_dxt1_rgb_fetch, 8);
 }
 
 void
-util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+                                        const uint8_t *src_row, unsigned src_stride,
+                                        unsigned width, unsigned height)
 {
-   unsigned x, y, i, j;
-   for(y = 0; y < height; y += 4) {
-      const uint8_t *src = src_row;
-      for(x = 0; x < width; x += 4) {
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
-               float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
-               uint8_t tmp[4];
-               util_format_dxt5_rgba_fetch(0, src, i, j, tmp);
-               dst[0] = ubyte_to_float(tmp[0]);
-               dst[1] = ubyte_to_float(tmp[1]);
-               dst[2] = ubyte_to_float(tmp[2]);
-               dst[3] = ubyte_to_float(tmp[3]);
-            }
-         }
-         src += 16;
-      }
-      src_row += src_stride;
-   }
+   util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
+                                          src_row, src_stride,
+                                          width, height,
+                                          util_format_dxt1_rgba_fetch, 8);
+}
+
+void
+util_format_dxt3_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+                                        const uint8_t *src_row, unsigned src_stride,
+                                        unsigned width, unsigned height)
+{
+   util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
+                                          src_row, src_stride,
+                                          width, height,
+                                          util_format_dxt3_rgba_fetch, 16);
+}
+
+void
+util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+                                        const uint8_t *src_row, unsigned src_stride,
+                                        unsigned width, unsigned height)
+{
+   util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
+                                          src_row, src_stride,
+                                          width, height,
+                                          util_format_dxt5_rgba_fetch, 16);
 }
 
 
@@ -411,201 +379,198 @@ util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, con
  */
 
 void
-util_format_dxt1_rgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+                                      const uint8_t *src, unsigned src_stride,
+                                      unsigned width, unsigned height)
 {
+   const unsigned bw = 4, bh = 4, bytes_per_block = 8;
    unsigned x, y, i, j, k;
-   for(y = 0; y < height; y += 4) {
-      const uint8_t *src = src_row;
+   for(y = 0; y < height; y += bh) {
       uint8_t *dst = dst_row;
-      for(x = 0; x < width; x += 4) {
-         uint8_t tmp[4][4][3];
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
+      for(x = 0; x < width; x += bw) {
+         uint8_t tmp[4][4][3];  /* [bh][bw][comps] */
+         for(j = 0; j < bh; ++j) {
+            for(i = 0; i < bw; ++i) {
                for(k = 0; k < 3; ++k) {
-                  tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + i*4 + k];
+                  tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*4 + k];
                }
             }
          }
-         util_format_dxtn_pack(3, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGB, dst, dst_stride);
-         src += 4*4;
-         dst += 8;
+         util_format_dxtn_pack(3, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGB, dst, 0);
+         dst += bytes_per_block;
       }
-      src_row += src_stride;
-      dst_row += 4*dst_stride/sizeof(*dst_row);
+      dst_row += dst_stride / sizeof(*dst_row);
    }
 }
 
 void
-util_format_dxt1_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+                                       const uint8_t *src, unsigned src_stride,
+                                       unsigned width, unsigned height)
 {
+   const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 8;
    unsigned x, y, i, j, k;
-   for(y = 0; y < height; y += 4) {
-      const uint8_t *src = src_row;
+   for(y = 0; y < height; y += bh) {
       uint8_t *dst = dst_row;
-      for(x = 0; x < width; x += 4) {
-         uint8_t tmp[4][4][4];
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
-               for(k = 0; k < 4; ++k) {
-                  tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + i*4 + k];
+      for(x = 0; x < width; x += bw) {
+         uint8_t tmp[4][4][4];  /* [bh][bw][comps] */
+         for(j = 0; j < bh; ++j) {
+            for(i = 0; i < bw; ++i) {
+               for(k = 0; k < comps; ++k) {
+                  tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*comps + k];
                }
             }
          }
-         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGBA, dst, dst_stride);
-         src += 4*4;
-         dst += 8;
+         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGBA, dst, 0);
+         dst += bytes_per_block;
       }
-      src_row += src_stride;
-      dst_row += 4*dst_stride/sizeof(*dst_row);
+      dst_row += dst_stride / sizeof(*dst_row);
    }
 }
 
 void
-util_format_dxt3_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt3_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+                                       const uint8_t *src, unsigned src_stride,
+                                       unsigned width, unsigned height)
 {
+   const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 16;
    unsigned x, y, i, j, k;
-   for(y = 0; y < height; y += 4) {
-      const uint8_t *src = src_row;
+   for(y = 0; y < height; y += bh) {
       uint8_t *dst = dst_row;
-      for(x = 0; x < width; x += 4) {
-         uint8_t tmp[4][4][4];
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
-               for(k = 0; k < 4; ++k) {
-                  tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + i*4 + k];
+      for(x = 0; x < width; x += bw) {
+         uint8_t tmp[4][4][4];  /* [bh][bw][comps] */
+         for(j = 0; j < bh; ++j) {
+            for(i = 0; i < bw; ++i) {
+               for(k = 0; k < comps; ++k) {
+                  tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*comps + k];
                }
             }
          }
-         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT3_RGBA, dst, dst_stride);
-         src += 4*4;
-         dst += 16;
+         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT3_RGBA, dst, 0);
+         dst += bytes_per_block;
       }
-      src_row += src_stride;
-      dst_row += 4*dst_stride/sizeof(*dst_row);
+      dst_row += dst_stride / sizeof(*dst_row);
    }
 }
 
 void
-util_format_dxt5_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt5_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+                                       const uint8_t *src, unsigned src_stride,
+                                       unsigned width, unsigned height)
 {
+   const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 16;
    unsigned x, y, i, j, k;
-   for(y = 0; y < height; y += 4) {
-      const uint8_t *src = src_row;
+
+   for(y = 0; y < height; y += bh) {
       uint8_t *dst = dst_row;
-      for(x = 0; x < width; x += 4) {
-         uint8_t tmp[4][4][4];
-         for(j = 0; j < 4; ++j) {
-            for(i = 0; i < 4; ++i) {
-               for(k = 0; k < 4; ++k) {
-                  tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + i*4 + k];
+      for(x = 0; x < width; x += bw) {
+         uint8_t tmp[4][4][4];  /* [bh][bw][comps] */
+         for(j = 0; j < bh; ++j) {
+            for(i = 0; i < bw; ++i) {
+               for(k = 0; k < comps; ++k) {
+                  tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*comps + k];
                }
             }
          }
-         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT5_RGBA, dst, dst_stride);
-         src += 4*4;
-         dst += 16;
+         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT5_RGBA, dst, 0);
+         dst += bytes_per_block;
       }
-      src_row += src_stride;
-      dst_row += 4*dst_stride/sizeof(*dst_row);
+      dst_row += dst_stride / sizeof(*dst_row);
    }
 }
 
 void
-util_format_dxt1_rgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+                                     const float *src, unsigned src_stride,
+                                     unsigned width, unsigned height)
 {
    unsigned x, y, i, j, k;
    for(y = 0; y < height; y += 4) {
-      const float *src = src_row;
       uint8_t *dst = dst_row;
       for(x = 0; x < width; x += 4) {
          uint8_t tmp[4][4][3];
          for(j = 0; j < 4; ++j) {
             for(i = 0; i < 4; ++i) {
                for(k = 0; k < 3; ++k) {
-                  tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + i*4 + k]);
+                  tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
                }
             }
          }
-         util_format_dxtn_pack(3, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGB, dst, dst_stride);
-         src += 4*4;
+         util_format_dxtn_pack(3, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGB, dst, 0);
          dst += 8;
       }
-      src_row += src_stride;
       dst_row += 4*dst_stride/sizeof(*dst_row);
    }
 }
 
 void
-util_format_dxt1_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+                                      const float *src, unsigned src_stride,
+                                      unsigned width, unsigned height)
 {
    unsigned x, y, i, j, k;
    for(y = 0; y < height; y += 4) {
-      const float *src = src_row;
       uint8_t *dst = dst_row;
       for(x = 0; x < width; x += 4) {
          uint8_t tmp[4][4][4];
          for(j = 0; j < 4; ++j) {
             for(i = 0; i < 4; ++i) {
                for(k = 0; k < 4; ++k) {
-                  tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + i*4 + k]);
+                  tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
                }
             }
          }
-         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGBA, dst, dst_stride);
-         src += 4*4;
+         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGBA, dst, 0);
          dst += 8;
       }
-      src_row += src_stride;
       dst_row += 4*dst_stride/sizeof(*dst_row);
    }
 }
 
 void
-util_format_dxt3_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt3_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+                                      const float *src, unsigned src_stride,
+                                      unsigned width, unsigned height)
 {
    unsigned x, y, i, j, k;
    for(y = 0; y < height; y += 4) {
-      const float *src = src_row;
       uint8_t *dst = dst_row;
       for(x = 0; x < width; x += 4) {
          uint8_t tmp[4][4][4];
          for(j = 0; j < 4; ++j) {
             for(i = 0; i < 4; ++i) {
                for(k = 0; k < 4; ++k) {
-                  tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + i*4 + k]);
+                  tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
                }
             }
          }
-         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT3_RGBA, dst, dst_stride);
-         src += 4*4;
+         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT3_RGBA, dst, 0);
          dst += 16;
       }
-      src_row += src_stride;
       dst_row += 4*dst_stride/sizeof(*dst_row);
    }
 }
 
 void
-util_format_dxt5_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt5_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+                                      const float *src, unsigned src_stride,
+                                      unsigned width, unsigned height)
 {
    unsigned x, y, i, j, k;
    for(y = 0; y < height; y += 4) {
-      const float *src = src_row;
       uint8_t *dst = dst_row;
       for(x = 0; x < width; x += 4) {
          uint8_t tmp[4][4][4];
          for(j = 0; j < 4; ++j) {
             for(i = 0; i < 4; ++i) {
                for(k = 0; k < 4; ++k) {
-                  tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + i*4 + k]);
+                  tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
                }
             }
          }
-         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT5_RGBA, dst, dst_stride);
-         src += 4*4;
+         util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT5_RGBA, dst, 0);
          dst += 16;
       }
-      src_row += src_stride;
       dst_row += 4*dst_stride/sizeof(*dst_row);
    }
 }
index 0be4609a2076720786122a09bb4e2694b8a02f36..668da8c5c27bb611e211613e4ed2b5cdb3eddff7 100644 (file)
@@ -9,13 +9,13 @@
 static unsigned
 hash(void *key)
 {
-   return (unsigned)key;
+   return (unsigned)(uintptr_t)key;
 }
 
 static int
 compare(void *key1, void *key2)
 {
-   return (unsigned)key1 - (unsigned)key2;
+   return (unsigned)(uintptr_t)key1 - (unsigned)(uintptr_t)key2;
 }
 
 struct pipe_surface *
@@ -67,7 +67,7 @@ util_surfaces_do_detach(struct util_surfaces *us, struct pipe_surface *ps)
    struct pipe_resource *pt = ps->texture;
    if(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE)
    {   /* or 2D array */
-      void* key = (void*)(((ps->zslice + ps->face) << 8) | ps->level);
+      void* key = (void*)(uintptr_t)(((ps->zslice + ps->face) << 8) | ps->level);
       util_hash_table_remove(us->u.table, key);
    }
    else
@@ -105,7 +105,7 @@ util_surfaces_destroy(struct util_surfaces *us, struct pipe_resource *pt, void (
            if(ps)
               destroy_surface(ps);
         }
-        free(us->u.array);
+        FREE(us->u.array);
         us->u.array = NULL;
       }
    }
index fe327c302b7a27c2e20e1975faf9cfca75202bc2..f7aa1403d085fd298c3f5916ae72a41aeafa5de3 100644 (file)
@@ -544,7 +544,7 @@ pipe_put_tile_z(struct pipe_context *pipe,
    case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
       {
          uint *pDest = (uint *) (map + y * pt->stride + x*4);
-         //assert((pt->usage & PIPE_TRANSFER_READ_WRITE) == PIPE_TRANSFER_READ_WRITE);
+         /*assert((pt->usage & PIPE_TRANSFER_READ_WRITE) == PIPE_TRANSFER_READ_WRITE);*/
          for (i = 0; i < h; i++) {
             for (j = 0; j < w; j++) {
                /* convert 32-bit Z to 24-bit Z, preserve stencil */
@@ -571,7 +571,7 @@ pipe_put_tile_z(struct pipe_context *pipe,
    case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
       {
          uint *pDest = (uint *) (map + y * pt->stride + x*4);
-         //assert((pt->usage & PIPE_TRANSFER_READ_WRITE) == PIPE_TRANSFER_READ_WRITE);
+         /*assert((pt->usage & PIPE_TRANSFER_READ_WRITE) == PIPE_TRANSFER_READ_WRITE);*/
          for (i = 0; i < h; i++) {
             for (j = 0; j < w; j++) {
                /* convert 32-bit Z to 24-bit Z, preserve stencil */
index 59c19ed98ddebdce55932204598bb1c15253536d..ccc84405c4160b74914ddb38e6ee341b9956f7c3 100644 (file)
@@ -45,9 +45,9 @@ copyright = u'2009, VMWare, X.org, Nouveau'
 # built documents.
 #
 # The short X.Y version.
-version = '0.3'
+version = '0.4'
 # The full version, including alpha/beta/rc tags.
-release = '0.3'
+release = '0.4'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
index b6efd1d40cfa6bb0835b1a1c971a4b52d97b8631..c5815f8939c2f61d803fc8ea805f51876c99222e 100644 (file)
@@ -3,16 +3,19 @@ Screen
 
 A screen is an object representing the context-independent part of a device.
 
-Useful Flags
-------------
+Flags and enumerations
+----------------------
+
+XXX some of these don't belong in this section.
+
 
 .. _pipe_cap:
 
-PIPE_CAP
-^^^^^^^^
+PIPE_CAP_*
+^^^^^^^^^^
 
-Pipe capabilities help expose hardware functionality not explicitly required
-by Gallium. For floating-point values, use :ref:`get_paramf`, and for boolean
+Capability queries return information about the features and limits of the
+driver/GPU.  For floating-point values, use :ref:`get_paramf`, and for boolean
 or integer values, use :ref:`get_param`.
 
 The integer capabilities:
@@ -56,6 +59,19 @@ The integer capabilities:
   to any shader stage using ``set_constant_buffer``. If 0 or 1, the pipe will
   only permit binding one constant buffer per shader, and the shaders will
   not permit two-dimensional access to constants.
+
+If a value greater than 0 is returned, the driver can have multiple
+constant buffers bound to shader stages. The CONST register file can
+be accessed with two-dimensional indices, like in the example below.
+
+DCL CONST[0][0..7]       # declare first 8 vectors of constbuf 0
+DCL CONST[3][0]          # declare first vector of constbuf 3
+MOV OUT[0], CONST[0][3]  # copy vector 3 of constbuf 0
+
+For backwards compatibility, one-dimensional access to CONST register
+file is still supported. In that case, the constbuf index is assumed
+to be 0.
+
 * ``MAX_CONST_BUFFER_SIZE``: Maximum byte size of a single constant buffer.
 * ``INDEP_BLEND_ENABLE``: Whether per-rendertarget blend enabling and channel
   masks are supported. If 0, then the first rendertarget's blend mask is
@@ -85,64 +101,55 @@ The floating-point capabilities:
 * ``GUARD_BAND_LEFT``, ``GUARD_BAND_TOP``, ``GUARD_BAND_RIGHT``,
   ``GUARD_BAND_BOTTOM``: XXX
 
-XXX Is there a better home for this? vvv
-
-If 0 is returned, the driver is not aware of multiple constant buffers,
-supports binding of only one constant buffer, and does not support
-two-dimensional CONST register file access in TGSI shaders.
-
-If a value greater than 0 is returned, the driver can have multiple
-constant buffers bound to shader stages. The CONST register file can
-be accessed with two-dimensional indices, like in the example below.
-
-DCL CONST[0][0..7]       # declare first 8 vectors of constbuf 0
-DCL CONST[3][0]          # declare first vector of constbuf 3
-MOV OUT[0], CONST[0][3]  # copy vector 3 of constbuf 0
 
-For backwards compatibility, one-dimensional access to CONST register
-file is still supported. In that case, the constbuf index is assumed
-to be 0.
 
 .. _pipe_bind:
 
-PIPE_BIND
-^^^^^^^^^
+PIPE_BIND_*
+^^^^^^^^^^^
 
-These flags control resource creation. Resources may be used in different roles
+These flags indicate how a resource will be used and are specified at resource
+creation time. Resources may be used in different roles
 during their lifecycle. Bind flags are cumulative and may be combined to create
-a resource which can be used as multiple things.
-Depending on the pipe driver's memory management, depending on these bind flags
+a resource which can be used for multiple things.
+Depending on the pipe driver's memory management and these bind flags,
 resources might be created and handled quite differently.
 
-* ``RENDER_TARGET``: A color buffer or pixel buffer which will be rendered to.
-* ``DISPLAY_TARGET``: A sharable buffer that can be given to another process.
-* ``DEPTH_STENCIL``: A depth (Z) buffer or stencil buffer.  Gallium does
-  not explicitly provide for stencil-only buffers, so any stencil buffer
-  validated here is implicitly also a depth buffer.
-* ``SAMPLER_VIEW``: A texture that may be sampled from in a fragment or vertex
-  shader.
-* ``VERTEX_BUFFER``: A vertex buffer.
-* ``INDEX_BUFFER``: An element buffer.
-* ``CONSTANT_BUFFER``: A buffer of shader constants.
-* ``BLIT_SOURCE``: A blit source, as given to surface_copy.
-* ``BLIT_DESTINATION``: A blit destination, as given to surface_copy and surface_fill.
-* ``TRANSFER_WRITE``: A transfer object which will be written to.
-* ``TRANSFER_READ``: A transfer object which will be read from.
-* ``CUSTOM``:
-* ``SCANOUT``: A front color buffer or scanout buffer.
-* ``SHARED``:
+* ``PIPE_BIND_RENDER_TARGET``: A color buffer or pixel buffer which will be
+  rendered to.  Any surface/resource attached to pipe_framebuffer_state::cbufs
+  must have this flag set.
+* ``PIPE_BIND_DEPTH_STENCIL``: A depth (Z) buffer and/or stencil buffer. Any
+  depth/stencil surface/resource attached to pipe_framebuffer_state::zsbuf must
+  have this flag set.
+* ``PIPE_BIND_DISPLAY_TARGET``: A surface that can be presented to screen. Arguments to
+  pipe_screen::flush_front_buffer must have this flag set.
+* ``PIPE_BIND_SAMPLER_VIEW``: A texture that may be sampled from in a fragment
+  or vertex shader.
+* ``PIPE_BIND_VERTEX_BUFFER``: A vertex buffer.
+* ``PIPE_BIND_INDEX_BUFFER``: An vertex index/element buffer.
+* ``PIPE_BIND_CONSTANT_BUFFER``: A buffer of shader constants.
+* ``PIPE_BIND_BLIT_SOURCE``: A blit source, as given to surface_copy.
+* ``PIPE_BIND_BLIT_DESTINATION``: A blit destination, as given to surface_copy
+  and surface_fill.
+* ``PIPE_BIND_TRANSFER_WRITE``: A transfer object which will be written to.
+* ``PIPE_BIND_TRANSFER_READ``: A transfer object which will be read from.
+* ``PIPE_BIND_CUSTOM``:
+* ``PIPE_BIND_SCANOUT``: A front color buffer or scanout buffer.
+* ``PIPE_BIND_SHARED``: A sharable buffer that can be given to another
+  process.
 
 .. _pipe_usage:
 
-PIPE_USAGE
-^^^^^^^^^^
+PIPE_USAGE_*
+^^^^^^^^^^^^
+
+The PIPE_USAGE enums are hints about the expected usage pattern of a resource.
 
-The PIPE_USAGE enums are hints about the expected lifecycle of a resource.
-* ``DEFAULT``: Expect many uploads to the resource, intermixed with draws.
-* ``DYNAMIC``: Expect many uploads to the resource, intermixed with draws.
-* ``STATIC``: Same as immutable (?)
-* ``IMMUTABLE``: Resource will not be changed after first upload.
-* ``STREAM``: Upload will be followed by draw, followed by upload, ...
+* ``PIPE_USAGE_DEFAULT``: Expect many uploads to the resource, intermixed with draws.
+* ``PIPE_USAGE_DYNAMIC``: Expect many uploads to the resource, intermixed with draws.
+* ``PIPE_USAGE_STATIC``: Same as immutable (?)
+* ``PIPE_USAGE_IMMUTABLE``: Resource will not be changed after first upload.
+* ``PIPE_USAGE_STREAM``: Upload will be followed by draw, followed by upload, ...
 
 
 
@@ -162,7 +169,7 @@ For example, a compressed format might only be used for POT textures.
 Methods
 -------
 
-XXX moar; got bored
+XXX to-do
 
 get_name
 ^^^^^^^^
@@ -204,9 +211,15 @@ and/or front-buffer rendering.
 is_format_supported
 ^^^^^^^^^^^^^^^^^^^
 
-See if a format can be used in a specific manner.
+Determine if a resource in the given format can be used in a specific manner.
 
-**tex_usage** is a bitmask of :ref:`PIPE_BIND` flags.
+**format** the resource format
+
+**target** one of the PIPE_TEXTURE_x flags
+
+**bindings** is a bitmask of :ref:`PIPE_BIND` flags.
+
+**geom_flags** is a bitmask of PIPE_TEXTURE_GEOM_x flags.
 
 Returns TRUE if all usages can be satisfied.
 
@@ -214,15 +227,35 @@ Returns TRUE if all usages can be satisfied.
 .. _resource_create:
 
 resource_create
-^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^
+
+Create a new resource from a template.
+The following fields of the pipe_resource must be specified in the template:
+
+target
+
+format
+
+width0
+
+height0
+
+depth0
+
+last_level
+
+nr_samples
+
+usage
+
+bind
+
+flags
+
 
-Given a template of texture setup, create a resource.
-The way a resource may be used is specifed by bind flags, :ref:`pipe_bind`.
-and hints are used to indicate to the driver what access pattern might be
-likely, :ref:`pipe_usage`.
 
 resource_destroy
-^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^
 
 Destroy a resource. A resource is destroyed if it has no more references.
 
index c292cd37d5c21f8c940f1d7bf22caa56fcf37075..e2c8602da0254832a92ec3aa8524c08d250e8ad7 100644 (file)
@@ -786,33 +786,6 @@ This instruction replicates its result.
   TBD
 
 
-.. opcode:: BGNFOR - Begin a For-Loop
-
-  dst.x = floor(src.x)
-  dst.y = floor(src.y)
-  dst.z = floor(src.z)
-
-  if (dst.y <= 0)
-    pc = [matching ENDFOR] + 1
-  endif
-
-  Note: The destination must be a loop register.
-        The source must be a constant register.
-
-.. note::
-
-   Considered for cleanup.
-
-.. note::
-
-   Considered for removal.
-
-
-.. opcode:: REP - Repeat
-
-  TBD
-
-
 .. opcode:: ELSE - Else
 
   TBD
@@ -823,30 +796,6 @@ This instruction replicates its result.
   TBD
 
 
-.. opcode:: ENDFOR - End a For-Loop
-
-  dst.x = dst.x + dst.z
-  dst.y = dst.y - 1.0
-
-  if (dst.y > 0)
-    pc = [matching BGNFOR instruction] + 1
-  endif
-
-  Note: The destination must be a loop register.
-
-.. note::
-
-   Considered for cleanup.
-
-.. note::
-
-   Considered for removal.
-
-.. opcode:: ENDREP - End Repeat
-
-  TBD
-
-
 .. opcode:: PUSHA - Push Address Register On Stack
 
   push(src.x)
index d2166a490165ee711aff2ff8e2d7c51119fa4b06..d7788bd9bbbc129e903ac0f01d3b9242ed2b1d62 100644 (file)
@@ -1622,14 +1622,6 @@ exec_instruction(
       *pc = -1;
       break;
 
-   case TGSI_OPCODE_REP:
-      ASSERT (0);
-      break;
-
-   case TGSI_OPCODE_ENDREP:
-       ASSERT (0);
-       break;
-
    case TGSI_OPCODE_PUSHA:
       ASSERT (0);
       break;
@@ -1743,8 +1735,6 @@ exec_instruction(
       mach->Primitives[mach->Temps[TEMP_PRIMITIVE_I].xyzw[TEMP_PRIMITIVE_C].u[0]] = 0;
       break;
 
-   case TGSI_OPCODE_BGNFOR:
-      /* fall-through (for now) */
    case TGSI_OPCODE_BGNLOOP:
       /* push LoopMask and ContMasks */
       ASSERT(mach->LoopStackTop < TGSI_EXEC_MAX_LOOP_NESTING);
@@ -1753,8 +1743,6 @@ exec_instruction(
       mach->ContStack[mach->ContStackTop++] = mach->ContMask;
       break;
 
-   case TGSI_OPCODE_ENDFOR:
-      /* fall-through (for now at least) */
    case TGSI_OPCODE_ENDLOOP:
       /* Restore ContMask, but don't pop */
       ASSERT(mach->ContStackTop > 0);
index 236c50f4d98ab8f354005fd8c95f93115306c440..9515cd8938c5d76449c6b02889870bb036561f25 100644 (file)
@@ -39,7 +39,7 @@ static void failover_destroy( struct pipe_context *pipe )
 {
    struct failover_context *failover = failover_context( pipe );
 
-   free( failover );
+   FREE( failover );
 }
 
 
index b682ce6750e2bb797b90fb23a60ee3b4ecffca3b..272e683067e5a0d97608d7c3a6aef048fb625b51 100644 (file)
@@ -29,6 +29,7 @@
  */
 
 #include "util/u_inlines.h"
+#include "util/u_memory.h"
 
 #include "fo_context.h"
 
@@ -53,7 +54,7 @@ static void *
 failover_create_blend_state( struct pipe_context *pipe,
                              const struct pipe_blend_state *blend )
 {
-   struct fo_state *state = malloc(sizeof(struct fo_state));
+   struct fo_state *state = MALLOC(sizeof(struct fo_state));
    struct failover_context *failover = failover_context(pipe);
 
    state->sw_state = failover->sw->create_blend_state(failover->sw, blend);
@@ -85,7 +86,7 @@ failover_delete_blend_state( struct pipe_context *pipe,
    failover->hw->delete_blend_state(failover->hw, state->hw_state);
    state->sw_state = 0;
    state->hw_state = 0;
-   free(state);
+   FREE(state);
 }
 
 static void
@@ -129,7 +130,7 @@ static void *
 failover_create_depth_stencil_state(struct pipe_context *pipe,
                               const struct pipe_depth_stencil_alpha_state *templ)
 {
-   struct fo_state *state = malloc(sizeof(struct fo_state));
+   struct fo_state *state = MALLOC(sizeof(struct fo_state));
    struct failover_context *failover = failover_context(pipe);
 
    state->sw_state = failover->sw->create_depth_stencil_alpha_state(failover->sw, templ);
@@ -161,7 +162,7 @@ failover_delete_depth_stencil_state(struct pipe_context *pipe,
    failover->hw->delete_depth_stencil_alpha_state(failover->hw, state->hw_state);
    state->sw_state = 0;
    state->hw_state = 0;
-   free(state);
+   FREE(state);
 }
 
 static void
@@ -181,7 +182,7 @@ static void *
 failover_create_fs_state(struct pipe_context *pipe,
                          const struct pipe_shader_state *templ)
 {
-   struct fo_state *state = malloc(sizeof(struct fo_state));
+   struct fo_state *state = MALLOC(sizeof(struct fo_state));
    struct failover_context *failover = failover_context(pipe);
 
    state->sw_state = failover->sw->create_fs_state(failover->sw, templ);
@@ -212,14 +213,14 @@ failover_delete_fs_state(struct pipe_context *pipe,
    failover->hw->delete_fs_state(failover->hw, state->hw_state);
    state->sw_state = 0;
    state->hw_state = 0;
-   free(state);
+   FREE(state);
 }
 
 static void *
 failover_create_vs_state(struct pipe_context *pipe,
                          const struct pipe_shader_state *templ)
 {
-   struct fo_state *state = malloc(sizeof(struct fo_state));
+   struct fo_state *state = MALLOC(sizeof(struct fo_state));
    struct failover_context *failover = failover_context(pipe);
 
    state->sw_state = failover->sw->create_vs_state(failover->sw, templ);
@@ -252,7 +253,7 @@ failover_delete_vs_state(struct pipe_context *pipe,
    failover->hw->delete_vs_state(failover->hw, state->hw_state);
    state->sw_state = 0;
    state->hw_state = 0;
-   free(state);
+   FREE(state);
 }
 
 
@@ -262,7 +263,7 @@ failover_create_vertex_elements_state( struct pipe_context *pipe,
                                        unsigned count,
                                        const struct pipe_vertex_element *velems )
 {
-   struct fo_state *state = malloc(sizeof(struct fo_state));
+   struct fo_state *state = MALLOC(sizeof(struct fo_state));
    struct failover_context *failover = failover_context(pipe);
 
    state->sw_state = failover->sw->create_vertex_elements_state(failover->sw, count, velems);
@@ -295,7 +296,7 @@ failover_delete_vertex_elements_state( struct pipe_context *pipe,
    failover->hw->delete_vertex_elements_state(failover->hw, state->hw_state);
    state->sw_state = 0;
    state->hw_state = 0;
-   free(state);
+   FREE(state);
 }
 
 static void 
@@ -315,7 +316,7 @@ static void *
 failover_create_rasterizer_state(struct pipe_context *pipe,
                                  const struct pipe_rasterizer_state *templ)
 {
-   struct fo_state *state = malloc(sizeof(struct fo_state));
+   struct fo_state *state = MALLOC(sizeof(struct fo_state));
    struct failover_context *failover = failover_context(pipe);
 
    state->sw_state = failover->sw->create_rasterizer_state(failover->sw, templ);
@@ -348,7 +349,7 @@ failover_delete_rasterizer_state(struct pipe_context *pipe,
    failover->hw->delete_rasterizer_state(failover->hw, state->hw_state);
    state->sw_state = 0;
    state->hw_state = 0;
-   free(state);
+   FREE(state);
 }
 
 
@@ -369,7 +370,7 @@ static void *
 failover_create_sampler_state(struct pipe_context *pipe,
                               const struct pipe_sampler_state *templ)
 {
-   struct fo_state *state = malloc(sizeof(struct fo_state));
+   struct fo_state *state = MALLOC(sizeof(struct fo_state));
    struct failover_context *failover = failover_context(pipe);
 
    state->sw_state = failover->sw->create_sampler_state(failover->sw, templ);
@@ -443,7 +444,7 @@ failover_delete_sampler_state(struct pipe_context *pipe, void *sampler)
    failover->hw->delete_sampler_state(failover->hw, state->hw_state);
    state->sw_state = 0;
    state->hw_state = 0;
-   free(state);
+   FREE(state);
 }
 
 
@@ -452,7 +453,7 @@ failover_create_sampler_view(struct pipe_context *pipe,
                              struct pipe_resource *texture,
                              const struct pipe_sampler_view *templ)
 {
-   struct fo_sampler_view *view = malloc(sizeof(struct fo_sampler_view));
+   struct fo_sampler_view *view = MALLOC(sizeof(struct fo_sampler_view));
    struct failover_context *failover = failover_context(pipe);
 
    view->sw = failover->sw->create_sampler_view(failover->sw, texture, templ);
@@ -478,7 +479,7 @@ failover_sampler_view_destroy(struct pipe_context *pipe,
    failover->hw->sampler_view_destroy(failover->hw, fo_view->hw);
 
    pipe_resource_reference(&fo_view->base.texture, NULL);
-   free(fo_view);
+   FREE(fo_view);
 }
 
 static void
index 323af16b145270686a1307887351bf03f30d40ff..a701de33f5dd95b99f65006ae535ed722c40c08b 100644 (file)
@@ -168,7 +168,7 @@ static enum pipe_error prepare_curbe_buffer(struct brw_context *brw)
 
    if (sz == 0) {
       if (brw->curbe.last_buf) {
-        free(brw->curbe.last_buf);
+        FREE(brw->curbe.last_buf);
         brw->curbe.last_buf = NULL;
         brw->curbe.last_bufsz  = 0;
       }
index 7d212e5c247a50ca1ca73ca30529e0f47ec04e30..ce5ed0a9ed2c025c277f511dbe73ea8d0adbb211 100644 (file)
@@ -84,8 +84,8 @@ void brw_clear_batch_cache( struct brw_context *brw )
 
    while (item) {
       struct brw_cached_batch_item *next = item->next;
-      free((void *)item->header);
-      free(item);
+      FREE((void *)item->header);
+      FREE(item);
       item = next;
    }
 
index 6c47415cac5724de66988b56b0a7d3fe4d9827e2..bd8b9174a89311f02105eb253e39067c626f9b5c 100644 (file)
@@ -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;
        }
index 630cdb5e4916424317f87b6494d442790038b88d..0bc8bf21966b5d2b847f8de109d7cf363f8609f5 100644 (file)
@@ -42,7 +42,7 @@ identity_destroy(struct pipe_context *_pipe)
 
    pipe->destroy(pipe);
 
-   free(id_pipe);
+   FREE(id_pipe);
 }
 
 static void
@@ -708,7 +708,7 @@ identity_create_sampler_view(struct pipe_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));
+   struct identity_sampler_view *view = MALLOC(sizeof(struct identity_sampler_view));
 
    view->sampler_view = pipe_unwrapped->create_sampler_view(pipe_unwrapped,
                                                             texture_unwrapped,
@@ -736,7 +736,7 @@ identity_sampler_view_destroy(struct pipe_context *pipe,
                                         view_unwrapped);
 
    pipe_resource_reference(&view->texture, NULL);
-   free(view);
+   FREE(view);
 }
 
 static struct pipe_transfer *
index d332c36af261eb35cfca86b12f73f68b807d7415..a9d41af18c7d7887721fc43e0a457414270f8209 100644 (file)
@@ -68,7 +68,7 @@ identity_drm_destroy(struct drm_api *_api)
    struct drm_api *api = id_api->api;
    api->destroy(api);
 
-   free(id_api);
+   FREE(id_api);
 }
 
 struct drm_api *
index 4a3fc036c490fc768c84d548b8e6932cd93b5773..4ea367597e18eb740dd856e50097511b4850a09e 100644 (file)
@@ -40,7 +40,7 @@ C_SOURCES = \
        lp_state_vertex.c \
        lp_state_vs.c \
        lp_surface.c \
-       lp_tex_sample_llvm.c \
+       lp_tex_sample.c \
        lp_texture.c \
        lp_tile_image.c \
        lp_tile_soa.c
@@ -58,8 +58,9 @@ include ../../Makefile.template
 lp_tile_soa.c: lp_tile_soa.py ../../auxiliary/util/u_format_parse.py ../../auxiliary/util/u_format_pack.py ../../auxiliary/util/u_format.csv
        python lp_tile_soa.py ../../auxiliary/util/u_format.csv > $@
 
-
-LIBS += $(GL_LIB_DEPS) -L../../auxiliary/ -lgallium libllvmpipe.a
+LDFLAGS += $(LLVM_LDFLAGS)
+LIBS += $(GL_LIB_DEPS) -L../../auxiliary/ -lgallium libllvmpipe.a $(LLVM_LIBS)
+LD=g++
 
 $(PROGS): lp_test_main.o libllvmpipe.a
 
index b9e9826e2a3c27db3a47288000c8de5e42f47cb3..2911cf2179a59074bf63998fa84fa154a3dde8f6 100644 (file)
@@ -60,7 +60,7 @@ llvmpipe = env.ConvenienceLibrary(
                'lp_state_vertex.c',
                'lp_state_vs.c',
                'lp_surface.c',
-               'lp_tex_sample_llvm.c',
+               'lp_tex_sample.c',
                'lp_texture.c',
                'lp_tile_image.c',
                'lp_tile_soa.c',
index f7cf06d8d46ad0c9b3be121348f1d072a31844af..32b80d3a9f633576466a2686412c5bff1720eab2 100644 (file)
@@ -97,63 +97,24 @@ llvmpipe_create_context( struct pipe_screen *screen, void *priv )
    llvmpipe->pipe.winsys = screen->winsys;
    llvmpipe->pipe.screen = screen;
    llvmpipe->pipe.priv = priv;
-   llvmpipe->pipe.destroy = llvmpipe_destroy;
-
-   /* state setters */
-   llvmpipe->pipe.create_blend_state = llvmpipe_create_blend_state;
-   llvmpipe->pipe.bind_blend_state   = llvmpipe_bind_blend_state;
-   llvmpipe->pipe.delete_blend_state = llvmpipe_delete_blend_state;
-
-   llvmpipe->pipe.create_sampler_state = llvmpipe_create_sampler_state;
-   llvmpipe->pipe.bind_fragment_sampler_states  = llvmpipe_bind_sampler_states;
-   llvmpipe->pipe.bind_vertex_sampler_states  = llvmpipe_bind_vertex_sampler_states;
-   llvmpipe->pipe.delete_sampler_state = llvmpipe_delete_sampler_state;
-
-   llvmpipe->pipe.create_depth_stencil_alpha_state = llvmpipe_create_depth_stencil_state;
-   llvmpipe->pipe.bind_depth_stencil_alpha_state   = llvmpipe_bind_depth_stencil_state;
-   llvmpipe->pipe.delete_depth_stencil_alpha_state = llvmpipe_delete_depth_stencil_state;
-
-   llvmpipe->pipe.create_rasterizer_state = llvmpipe_create_rasterizer_state;
-   llvmpipe->pipe.bind_rasterizer_state   = llvmpipe_bind_rasterizer_state;
-   llvmpipe->pipe.delete_rasterizer_state = llvmpipe_delete_rasterizer_state;
-
-   llvmpipe->pipe.create_fs_state = llvmpipe_create_fs_state;
-   llvmpipe->pipe.bind_fs_state   = llvmpipe_bind_fs_state;
-   llvmpipe->pipe.delete_fs_state = llvmpipe_delete_fs_state;
-
-   llvmpipe->pipe.create_vs_state = llvmpipe_create_vs_state;
-   llvmpipe->pipe.bind_vs_state   = llvmpipe_bind_vs_state;
-   llvmpipe->pipe.delete_vs_state = llvmpipe_delete_vs_state;
 
-   llvmpipe->pipe.create_vertex_elements_state = llvmpipe_create_vertex_elements_state;
-   llvmpipe->pipe.bind_vertex_elements_state = llvmpipe_bind_vertex_elements_state;
-   llvmpipe->pipe.delete_vertex_elements_state = llvmpipe_delete_vertex_elements_state;
-
-   llvmpipe->pipe.set_blend_color = llvmpipe_set_blend_color;
-   llvmpipe->pipe.set_stencil_ref = llvmpipe_set_stencil_ref;
-   llvmpipe->pipe.set_clip_state = llvmpipe_set_clip_state;
-   llvmpipe->pipe.set_constant_buffer = llvmpipe_set_constant_buffer;
+   /* Init the pipe context methods */
+   llvmpipe->pipe.destroy = llvmpipe_destroy;
    llvmpipe->pipe.set_framebuffer_state = llvmpipe_set_framebuffer_state;
-   llvmpipe->pipe.set_polygon_stipple = llvmpipe_set_polygon_stipple;
-   llvmpipe->pipe.set_scissor_state = llvmpipe_set_scissor_state;
-   llvmpipe->pipe.set_fragment_sampler_views = llvmpipe_set_fragment_sampler_views;
-   llvmpipe->pipe.set_vertex_sampler_views = llvmpipe_set_vertex_sampler_views;
-   llvmpipe->pipe.create_sampler_view = llvmpipe_create_sampler_view;
-   llvmpipe->pipe.sampler_view_destroy = llvmpipe_sampler_view_destroy;
-   llvmpipe->pipe.set_viewport_state = llvmpipe_set_viewport_state;
-
-   llvmpipe->pipe.set_vertex_buffers = llvmpipe_set_vertex_buffers;
-
-   llvmpipe->pipe.draw_arrays = llvmpipe_draw_arrays;
-   llvmpipe->pipe.draw_elements = llvmpipe_draw_elements;
-   llvmpipe->pipe.draw_range_elements = llvmpipe_draw_range_elements;
-
    llvmpipe->pipe.clear = llvmpipe_clear;
    llvmpipe->pipe.flush = llvmpipe_flush;
 
-
+   llvmpipe_init_blend_funcs(llvmpipe);
+   llvmpipe_init_clip_funcs(llvmpipe);
+   llvmpipe_init_draw_funcs(llvmpipe);
+   llvmpipe_init_sampler_funcs(llvmpipe);
    llvmpipe_init_query_funcs( llvmpipe );
+   llvmpipe_init_vertex_funcs(llvmpipe);
+   llvmpipe_init_fs_funcs(llvmpipe);
+   llvmpipe_init_vs_funcs(llvmpipe);
+   llvmpipe_init_rasterizer_funcs(llvmpipe);
    llvmpipe_init_context_resource_funcs( &llvmpipe->pipe );
+   llvmpipe_init_surface_functions(llvmpipe);
 
    /*
     * Create drawing context and plug our rendering stage into it.
@@ -186,8 +147,6 @@ llvmpipe_create_context( struct pipe_screen *screen, void *priv )
    draw_install_pstipple_stage(llvmpipe->draw, &llvmpipe->pipe);
 #endif
 
-   lp_init_surface_functions(llvmpipe);
-
    lp_reset_counters();
 
    return &llvmpipe->pipe;
index 4848101ffb84bed8c2055f75e6fc13c74fedec30..4e597b247960ac8f0692b108b68f69c669395f4e 100644 (file)
@@ -94,9 +94,6 @@ struct llvmpipe_context {
    /** Vertex format */
    struct vertex_info vertex_info;
 
-   /** Which vertex shader output slot contains point size */
-   int psize_slot;
-
    /** The tiling engine */
    struct lp_setup_context *setup;
 
index 0b63e1c889e967d3f774a1f739f1c9a6302e08a3..98780d7631b466e9d250219dcb1aadd7ea4e84d5 100644 (file)
 
 
 
-void
-llvmpipe_draw_arrays(struct pipe_context *pipe, unsigned mode,
-                     unsigned start, unsigned count)
-{
-   llvmpipe_draw_elements(pipe, NULL, 0, 0, mode, start, count);
-}
-
-
 /**
  * Draw vertex arrays, with optional indexing.
  * Basically, map the vertex buffers (and drawing surfaces), then hand off
  * the drawing to the 'draw' module.
  */
-void
+static void
 llvmpipe_draw_range_elements(struct pipe_context *pipe,
                              struct pipe_resource *indexBuffer,
                              unsigned indexSize,
@@ -115,7 +107,7 @@ llvmpipe_draw_range_elements(struct pipe_context *pipe,
 }
 
 
-void
+static void
 llvmpipe_draw_elements(struct pipe_context *pipe,
                        struct pipe_resource *indexBuffer,
                        unsigned indexSize,
@@ -128,3 +120,19 @@ llvmpipe_draw_elements(struct pipe_context *pipe,
                                  mode, start, count );
 }
 
+
+static void
+llvmpipe_draw_arrays(struct pipe_context *pipe, unsigned mode,
+                     unsigned start, unsigned count)
+{
+   llvmpipe_draw_elements(pipe, NULL, 0, 0, mode, start, count);
+}
+
+
+void
+llvmpipe_init_draw_funcs(struct llvmpipe_context *llvmpipe)
+{
+   llvmpipe->pipe.draw_arrays = llvmpipe_draw_arrays;
+   llvmpipe->pipe.draw_elements = llvmpipe_draw_elements;
+   llvmpipe->pipe.draw_range_elements = llvmpipe_draw_range_elements;
+}
index 3627dbd759ca1d75482fb36904351e5767e611f2..644b821957a2f5c7b40bae339bf62dfb30c97386 100644 (file)
@@ -96,41 +96,40 @@ llvmpipe_flush( struct pipe_context *pipe,
 /**
  * Flush context if necessary.
  *
- * TODO: move this logic to an auxiliary library?
+ * Returns FALSE if it would have block, but do_not_block was set, TRUE
+ * otherwise.
  *
- * FIXME: We must implement DISCARD/DONTBLOCK/UNSYNCHRONIZED/etc for
- * textures to avoid blocking.
+ * TODO: move this logic to an auxiliary library?
  */
 boolean
-llvmpipe_flush_texture(struct pipe_context *pipe,
-                       struct pipe_resource *texture,
-                       unsigned face,
-                       unsigned level,
-                       unsigned flush_flags,
-                       boolean read_only,
-                       boolean cpu_access,
-                       boolean do_not_flush)
+llvmpipe_flush_resource(struct pipe_context *pipe,
+                        struct pipe_resource *resource,
+                        unsigned face,
+                        unsigned level,
+                        unsigned flush_flags,
+                        boolean read_only,
+                        boolean cpu_access,
+                        boolean do_not_block)
 {
    unsigned referenced;
 
-   referenced = pipe->is_resource_referenced(pipe, texture, face, level);
+   referenced = pipe->is_resource_referenced(pipe, resource, face, level);
 
    if ((referenced & PIPE_REFERENCED_FOR_WRITE) ||
        ((referenced & PIPE_REFERENCED_FOR_READ) && !read_only)) {
 
-      if (do_not_flush)
-         return FALSE;
-
-      /*
-       * TODO: The semantics of these flush flags are too obtuse. They should
-       * disappear and the pipe driver should just ensure that all visible
-       * side-effects happen when they need to happen.
-       */
-      if (referenced & PIPE_REFERENCED_FOR_WRITE)
-         flush_flags |= PIPE_FLUSH_RENDER_CACHE;
+      if (resource->target != PIPE_BUFFER) {
+         /*
+          * TODO: The semantics of these flush flags are too obtuse. They should
+          * disappear and the pipe driver should just ensure that all visible
+          * side-effects happen when they need to happen.
+          */
+         if (referenced & PIPE_REFERENCED_FOR_WRITE)
+            flush_flags |= PIPE_FLUSH_RENDER_CACHE;
 
-      if (referenced & PIPE_REFERENCED_FOR_READ)
-         flush_flags |= PIPE_FLUSH_TEXTURE_CACHE;
+         if (referenced & PIPE_REFERENCED_FOR_READ)
+            flush_flags |= PIPE_FLUSH_TEXTURE_CACHE;
+      }
 
       if (cpu_access) {
          /*
@@ -139,6 +138,9 @@ llvmpipe_flush_texture(struct pipe_context *pipe,
 
          struct pipe_fence_handle *fence = NULL;
 
+         if (do_not_block)
+            return FALSE;
+
          pipe->flush(pipe, flush_flags, &fence);
 
          if (fence) {
index 2375d22b854a2da84a2708b10018cdb78d34e6f8..7b605681a935e51cc06bfab3cf69c45bcda5b10b 100644 (file)
 struct pipe_context;
 struct pipe_fence_handle;
 
-void llvmpipe_flush(struct pipe_context *pipe, unsigned flags,
-                    struct pipe_fence_handle **fence);
+void
+llvmpipe_flush(struct pipe_context *pipe, unsigned flags,
+               struct pipe_fence_handle **fence);
 
 boolean
-llvmpipe_flush_texture(struct pipe_context *pipe,
-                       struct pipe_resource *texture,
-                       unsigned face,
-                       unsigned level,
-                       unsigned flush_flags,
-                       boolean read_only,
-                       boolean cpu_access,
-                       boolean do_not_flush);
+llvmpipe_flush_resource(struct pipe_context *pipe,
+                        struct pipe_resource *resource,
+                        unsigned face,
+                        unsigned level,
+                        unsigned flush_flags,
+                        boolean read_only,
+                        boolean cpu_access,
+                        boolean do_not_block);
 
 #endif
index 8690941a507d4ccc5749c32cbb9288c2577811b1..466a2f54fbe29f8ea4e11c9eca599e2c8de55f7f 100644 (file)
@@ -171,15 +171,6 @@ lp_jit_screen_cleanup(struct llvmpipe_screen *screen)
 void
 lp_jit_screen_init(struct llvmpipe_screen *screen)
 {
-   util_cpu_detect();
-
-#if 0
-   /* For simulating less capable machines */
-   util_cpu_caps.has_sse3 = 0;
-   util_cpu_caps.has_ssse3 = 0;
-   util_cpu_caps.has_sse4_1 = 0;
-#endif
-
    lp_build_init();
 
    screen->module = lp_build_module;
diff --git a/src/gallium/drivers/llvmpipe/lp_limits.h b/src/gallium/drivers/llvmpipe/lp_limits.h
new file mode 100644 (file)
index 0000000..4102a9d
--- /dev/null
@@ -0,0 +1,70 @@
+/**************************************************************************
+ * 
+ * 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 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 THE 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.
+ * 
+ **************************************************************************/
+
+/**
+ * Implementation limits for LLVMpipe driver.
+ */
+
+#ifndef LP_LIMITS_H
+#define LP_LIMITS_H
+
+
+/**
+ * Tile size (width and height). This needs to be a power of two.
+ */
+#define TILE_ORDER 6
+#define TILE_SIZE (1 << TILE_ORDER)
+
+
+/**
+ * Max texture sizes
+ */
+#define LP_MAX_TEXTURE_2D_LEVELS 13  /* 4K x 4K for now */
+#define LP_MAX_TEXTURE_3D_LEVELS 10  /* 512 x 512 x 512 for now */
+
+
+/** This must be the larger of LP_MAX_TEXTURE_2D/3D_LEVELS */
+#define LP_MAX_TEXTURE_LEVELS LP_MAX_TEXTURE_2D_LEVELS
+
+
+/**
+ * Max drawing surface size is the max texture size
+ */
+#define LP_MAX_HEIGHT (1 << (LP_MAX_TEXTURE_LEVELS - 1))
+#define LP_MAX_WIDTH  (1 << (LP_MAX_TEXTURE_LEVELS - 1))
+
+
+#define LP_MAX_THREADS 8
+
+
+/**
+ * Max bytes per scene.  This may be replaced by a runtime parameter.
+ */
+#define LP_MAX_SCENE_SIZE (512 * 1024 * 1024)
+
+
+#endif /* LP_LIMITS_H */
index 4046701b85a2a24f7c252235351dd4e7b1d9d9b9..a00a592f2fe120d6fe4b7f272a1244f7eb02daef 100644 (file)
@@ -28,7 +28,6 @@
 #include <limits.h>
 #include "util/u_memory.h"
 #include "util/u_math.h"
-#include "util/u_cpu_detect.h"
 #include "util/u_surface.h"
 
 #include "lp_scene_queue.h"
@@ -122,9 +121,11 @@ lp_rast_end( struct lp_rasterizer *rast )
 
    rast->curr_scene = NULL;
 
+#ifdef DEBUG
    if (0)
-      printf("Post render scene: tile read: %d  tile write: %d\n",
-             tile_read_count, tile_write_count);
+      debug_printf("Post render scene: tile unswizzle: %u tile swizzle: %u\n",
+                   lp_tile_unswizzle_count, lp_tile_swizzle_count);
+#endif
 }
 
 
@@ -869,20 +870,6 @@ create_rast_threads(struct lp_rasterizer *rast)
 {
    unsigned i;
 
-#ifdef PIPE_OS_WINDOWS
-   /* Multithreading not supported on windows until conditions and barriers are
-    * properly implemented. */
-   rast->num_threads = 0;
-#else
-#ifdef PIPE_OS_EMBEDDED
-   rast->num_threads = 0;
-#else
-   rast->num_threads = util_cpu_caps.nr_cpus;
-#endif
-   rast->num_threads = debug_get_num_option("LP_NUM_THREADS", rast->num_threads);
-   rast->num_threads = MIN2(rast->num_threads, MAX_THREADS);
-#endif
-
    /* NOTE: if num_threads is zero, we won't use any threads */
    for (i = 0; i < rast->num_threads; i++) {
       pipe_semaphore_init(&rast->tasks[i].work_ready, 0);
@@ -895,12 +882,12 @@ create_rast_threads(struct lp_rasterizer *rast)
 
 
 /**
- * Create new lp_rasterizer.
- * \param empty  the queue to put empty scenes on after we've finished
- *               processing them.
+ * Create new lp_rasterizer.  If num_threads is zero, don't create any
+ * new threads, do rendering synchronously.
+ * \param num_threads  number of rasterizer threads to create
  */
 struct lp_rasterizer *
-lp_rast_create( void )
+lp_rast_create( unsigned num_threads )
 {
    struct lp_rasterizer *rast;
    unsigned i;
@@ -917,6 +904,8 @@ lp_rast_create( void )
       task->thread_index = i;
    }
 
+   rast->num_threads = num_threads;
+
    create_rast_threads(rast);
 
    /* for synchronizing rasterization threads */
@@ -955,6 +944,8 @@ void lp_rast_destroy( struct lp_rasterizer *rast )
    /* for synchronizing rasterization threads */
    pipe_barrier_destroy( &rast->barrier );
 
+   lp_scene_queue_destroy(rast->full_scenes);
+
    FREE(rast);
 }
 
index a0ecb2fc47f3b6db186bf5ccef5a632556502d42..e2f6f926779e9a3a54b94941384414c77eab1540 100644 (file)
@@ -134,7 +134,7 @@ struct lp_rast_triangle {
 
 
 struct lp_rasterizer *
-lp_rast_create( void );
+lp_rast_create( unsigned num_threads );
 
 void
 lp_rast_destroy( struct lp_rasterizer * );
index 8bf2b92a6abe93874a54a656e884f203c7dbd96c..5884d12721e248385841676ff192168abf9e7c28 100644 (file)
@@ -35,9 +35,7 @@
 #include "lp_scene.h"
 #include "lp_texture.h"
 #include "lp_tile_soa.h"
-
-
-#define MAX_THREADS 8  /* XXX probably temporary here */
+#include "lp_limits.h"
 
 
 struct lp_rasterizer;
@@ -107,16 +105,16 @@ struct lp_rasterizer
     * (potentially) shared, these empty scenes should be returned to
     * the context which created them rather than retained here.
     */
-   struct lp_scene_queue *empty_scenes;
+   /*   struct lp_scene_queue *empty_scenes; */
 
    /** The scene currently being rasterized by the threads */
    struct lp_scene *curr_scene;
 
    /** A task object for each rasterization thread */
-   struct lp_rasterizer_task tasks[MAX_THREADS];
+   struct lp_rasterizer_task tasks[LP_MAX_THREADS];
 
    unsigned num_threads;
-   pipe_thread threads[MAX_THREADS];
+   pipe_thread threads[LP_MAX_THREADS];
 
    /** For synchronizing the rasterization threads */
    pipe_barrier barrier;
index 182e7cb2303b9d44df469bee1ab83388d6153a43..1482a777ff849f6d13a8bd3c42c8a901773a4c6e 100644 (file)
 #include "util/u_surface.h"
 #include "lp_scene.h"
 #include "lp_scene_queue.h"
-#include "lp_debug.h"
 
 
+/** List of texture references */
+struct texture_ref {
+   struct pipe_resource *texture;
+   struct texture_ref *prev, *next;  /**< linked list w/ u_simple_list.h */
+};
+
+
+
+/**
+ * Create a new scene object.
+ * \param queue  the queue to put newly rendered/emptied scenes into
+ */
 struct lp_scene *
 lp_scene_create( struct pipe_context *pipe,
                  struct lp_scene_queue *queue )
@@ -57,7 +68,7 @@ lp_scene_create( struct pipe_context *pipe,
    scene->data.head =
       scene->data.tail = CALLOC_STRUCT(data_block);
 
-   make_empty_list(&scene->textures);
+   make_empty_list(&scene->resources);
 
    pipe_mutex_init(scene->mutex);
 
@@ -66,7 +77,7 @@ lp_scene_create( struct pipe_context *pipe,
 
 
 /**
- * Free all data associated with the given scene, and free(scene).
+ * Free all data associated with the given scene, and the scene itself.
  */
 void
 lp_scene_destroy(struct lp_scene *scene)
@@ -178,15 +189,17 @@ lp_scene_reset(struct lp_scene *scene )
    /* Release texture refs
     */
    {
-      struct texture_ref *ref, *next, *ref_list = &scene->textures;
+      struct resource_ref *ref, *next, *ref_list = &scene->resources;
       for (ref = ref_list->next; ref != ref_list; ref = next) {
          next = next_elem(ref);
-         pipe_resource_reference(&ref->texture, NULL);
+         pipe_resource_reference(&ref->resource, NULL);
          FREE(ref);
       }
       make_empty_list(ref_list);
    }
 
+   scene->scene_size = 0;
+
    scene->has_color_clear = FALSE;
    scene->has_depth_clear = FALSE;
 }
@@ -218,7 +231,10 @@ lp_bin_new_data_block( struct data_block_list *list )
 }
 
 
-/** Return number of bytes used for all bin data within a scene */
+/**
+ * Return number of bytes used for all bin data within a scene.
+ * This does not include resources (textures) referenced by the scene.
+ */
 unsigned
 lp_scene_data_size( const struct lp_scene *scene )
 {
@@ -247,32 +263,34 @@ lp_scene_bin_size( const struct lp_scene *scene, unsigned x, unsigned y )
 
 
 /**
- * Add a reference to a texture by the scene.
+ * Add a reference to a resource by the scene.
  */
 void
-lp_scene_texture_reference( struct lp_scene *scene,
-                            struct pipe_resource *texture )
+lp_scene_add_resource_reference(struct lp_scene *scene,
+                                struct pipe_resource *resource)
 {
-   struct texture_ref *ref = CALLOC_STRUCT(texture_ref);
+   struct resource_ref *ref = CALLOC_STRUCT(resource_ref);
    if (ref) {
-      struct texture_ref *ref_list = &scene->textures;
-      pipe_resource_reference(&ref->texture, texture);
+      struct resource_ref *ref_list = &scene->resources;
+      pipe_resource_reference(&ref->resource, resource);
       insert_at_tail(ref_list, ref);
    }
+
+   scene->scene_size += llvmpipe_resource_size(resource);
 }
 
 
 /**
- * Does this scene have a reference to the given texture?
+ * Does this scene have a reference to the given resource?
  */
 boolean
-lp_scene_is_resource_referenced( const struct lp_scene *scene,
-                                const struct pipe_resource *texture )
+lp_scene_is_resource_referenced(const struct lp_scene *scene,
+                                const struct pipe_resource *resource)
 {
-   const struct texture_ref *ref_list = &scene->textures;
-   const struct texture_ref *ref;
+   const struct resource_ref *ref_list = &scene->resources;
+   const struct resource_ref *ref;
    foreach (ref, ref_list) {
-      if (ref->texture == texture)
+      if (ref->resource == resource)
          return TRUE;
    }
    return FALSE;
@@ -393,61 +411,6 @@ end:
 }
 
 
-
-/**
- * Prepare this scene for the rasterizer.
- * Map the framebuffer surfaces.  Initialize the 'rast' state.
- */
-static boolean
-lp_scene_map_buffers( struct lp_scene *scene )
-{
-   LP_DBG(DEBUG_RAST, "%s\n", __FUNCTION__);
-
-   /* XXX framebuffer surfaces are no longer mapped here */
-   /* XXX move all map/unmap stuff into rast module... */
-
-   return TRUE;
-}
-
-
-
-/**
- * Called after rasterizer as finished rasterizing a scene. 
- * 
- * We want to call this from the pipe_context's current thread to
- * avoid having to have mutexes on the transfer functions.
- */
-static void
-lp_scene_unmap_buffers( struct lp_scene *scene )
-{
-#if 0
-   unsigned i;
-
-   for (i = 0; i < scene->fb.nr_cbufs; i++) {
-      if (scene->cbuf_map[i]) {
-         struct pipe_surface *cbuf = scene->fb.cbufs[i];
-         llvmpipe_resource_unmap(cbuf->texture,
-                                cbuf->face,
-                                cbuf->level,
-                                cbuf->zslice);
-         scene->cbuf_map[i] = NULL;
-      }
-   }
-
-   if (scene->zsbuf_map) {
-      struct pipe_surface *zsbuf = scene->fb.zsbuf;
-      llvmpipe_resource_unmap(zsbuf->texture,
-                             zsbuf->face,
-                             zsbuf->level,
-                             zsbuf->zslice);
-      scene->zsbuf_map = NULL;
-   }
-#endif
-
-   util_unreference_framebuffer_state( &scene->fb );
-}
-
-
 void lp_scene_begin_binning( struct lp_scene *scene,
                              struct pipe_framebuffer_state *fb )
 {
@@ -464,8 +427,7 @@ void lp_scene_begin_binning( struct lp_scene *scene,
 
 
 void lp_scene_rasterize( struct lp_scene *scene,
-                         struct lp_rasterizer *rast,
-                         boolean write_depth )
+                         struct lp_rasterizer *rast )
 {
    if (0) {
       unsigned x, y;
@@ -479,11 +441,6 @@ void lp_scene_rasterize( struct lp_scene *scene,
       }
    }
 
-   scene->write_depth = (scene->fb.zsbuf != NULL &&
-                         write_depth);
-
-   lp_scene_map_buffers( scene );
-
    /* Enqueue the scene for rasterization, then immediately wait for
     * it to finish.
     */
@@ -494,6 +451,9 @@ void lp_scene_rasterize( struct lp_scene *scene,
     * transfers become per-context:
     */
    lp_rast_finish( rast );
-   lp_scene_unmap_buffers( scene );
+
+   util_unreference_framebuffer_state( &scene->fb );
+
+   /* put scene into the empty list */
    lp_scene_enqueue( scene->empty_queue, scene );
 }
index ac0717db6a1f94c37ab730329ed8d7c75ea1ca3c..9467cd6f16d174d6273b8a7d28626bfbb327cd91 100644 (file)
@@ -44,10 +44,8 @@ struct lp_scene_queue;
 /* We're limited to 2K by 2K for 32bit fixed point rasterization.
  * Will need a 64-bit version for larger framebuffers.
  */
-#define MAXHEIGHT 2048
-#define MAXWIDTH 2048
-#define TILES_X (MAXWIDTH / TILE_SIZE)
-#define TILES_Y (MAXHEIGHT / TILE_SIZE)
+#define TILES_X (LP_MAX_WIDTH / TILE_SIZE)
+#define TILES_Y (LP_MAX_HEIGHT / TILE_SIZE)
 
 
 #define CMD_BLOCK_MAX 128
@@ -97,10 +95,10 @@ struct data_block_list {
 };
 
 
-/** List of texture references */
-struct texture_ref {
-   struct pipe_resource *texture;
-   struct texture_ref *prev, *next;  /**< linked list w/ u_simple_list.h */
+/** List of resource references */
+struct resource_ref {
+   struct pipe_resource *resource;
+   struct resource_ref *prev, *next;  /**< linked list w/ u_simple_list.h */
 };
 
 
@@ -118,10 +116,14 @@ struct lp_scene {
    /** the framebuffer to render the scene into */
    struct pipe_framebuffer_state fb;
 
-   /** list of textures referenced by the scene commands */
-   struct texture_ref textures;
+   /** list of resources referenced by the scene commands */
+   struct resource_ref resources;
+
+   /** Approx memory used by the scene (in bytes).  This includes the
+    * shared and per-tile bins plus any referenced resources/textures.
+    */
+   unsigned scene_size;
 
-   boolean write_depth;
    boolean has_color_clear;
    boolean has_depth_clear;
 
@@ -164,11 +166,11 @@ unsigned lp_scene_data_size( const struct lp_scene *scene );
 
 unsigned lp_scene_bin_size( const struct lp_scene *scene, unsigned x, unsigned y );
 
-void lp_scene_texture_reference( struct lp_scene *scene,
-                                 struct pipe_resource *texture );
+void lp_scene_add_resource_reference(struct lp_scene *scene,
+                                     struct pipe_resource *resource);
 
-boolean lp_scene_is_resource_referenced( const struct lp_scene *scene,
-                                        const struct pipe_resource *texture );
+boolean lp_scene_is_resource_referenced(const struct lp_scene *scene,
+                                        const struct pipe_resource *resource );
 
 
 /**
@@ -184,6 +186,8 @@ lp_scene_alloc( struct lp_scene *scene, unsigned size)
       lp_bin_new_data_block( list );
    }
 
+   scene->scene_size += size;
+
    {
       struct data_block *tail = list->tail;
       ubyte *data = tail->data + tail->used;
@@ -206,6 +210,8 @@ lp_scene_alloc_aligned( struct lp_scene *scene, unsigned size,
       lp_bin_new_data_block( list );
    }
 
+   scene->scene_size += size;
+
    {
       struct data_block *tail = list->tail;
       ubyte *data = tail->data + tail->used;
@@ -222,6 +228,7 @@ static INLINE void
 lp_scene_putback_data( struct lp_scene *scene, unsigned size)
 {
    struct data_block_list *list = &scene->data;
+   scene->scene_size -= size;
    assert(list->tail->used >= size);
    list->tail->used -= size;
 }
@@ -304,11 +311,18 @@ lp_scene_bin_iter_next( struct lp_scene *scene, int *bin_x, int *bin_y );
 
 void
 lp_scene_rasterize( struct lp_scene *scene,
-                    struct lp_rasterizer *rast,
-                    boolean write_depth );
+                    struct lp_rasterizer *rast );
 
 void
 lp_scene_begin_binning( struct lp_scene *scene,
                         struct pipe_framebuffer_state *fb );
 
+
+static INLINE unsigned
+lp_scene_get_size(const struct lp_scene *scene)
+{
+   return scene->scene_size;
+}
+
+
 #endif /* LP_BIN_H */
index 6d309c6b6474741b95d2d3be2b01649cd3ff415a..111eedc4f239752fb87a508f4c5d375dd30a8d68 100644 (file)
@@ -27,6 +27,8 @@
 
 
 #include "util/u_memory.h"
+#include "util/u_math.h"
+#include "util/u_cpu_detect.h"
 #include "util/u_format.h"
 #include "util/u_format_s3tc.h"
 #include "pipe/p_defines.h"
@@ -39,6 +41,7 @@
 #include "lp_context.h"
 #include "lp_debug.h"
 #include "lp_public.h"
+#include "lp_limits.h"
 
 #include "state_tracker/sw_winsys.h"
 
@@ -94,6 +97,8 @@ llvmpipe_get_param(struct pipe_screen *screen, int param)
       return 1;
    case PIPE_CAP_GLSL:
       return 1;
+   case PIPE_CAP_SM3:
+      return 1;
    case PIPE_CAP_ANISOTROPIC_FILTER:
       return 0;
    case PIPE_CAP_POINT_SPRITE:
@@ -165,7 +170,7 @@ static boolean
 llvmpipe_is_format_supported( struct pipe_screen *_screen,
                               enum pipe_format format, 
                               enum pipe_texture_target target,
-                              unsigned tex_usage, 
+                              unsigned bind,
                               unsigned geom_flags )
 {
    struct llvmpipe_screen *screen = llvmpipe_screen(_screen);
@@ -173,7 +178,7 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
    const struct util_format_description *format_desc;
 
    format_desc = util_format_description(format);
-   if(!format_desc)
+   if (!format_desc)
       return FALSE;
 
    assert(target == PIPE_TEXTURE_1D ||
@@ -181,45 +186,42 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
           target == PIPE_TEXTURE_3D ||
           target == PIPE_TEXTURE_CUBE);
 
-   switch(format) {
-   case PIPE_FORMAT_DXT1_RGB:
-   case PIPE_FORMAT_DXT1_RGBA:
-   case PIPE_FORMAT_DXT3_RGBA:
-   case PIPE_FORMAT_DXT5_RGBA:
-      return util_format_s3tc_enabled;
-   default:
-      break;
-   }
-
-   if(tex_usage & PIPE_BIND_RENDER_TARGET) {
-      if(format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN)
+   if (bind & PIPE_BIND_RENDER_TARGET) {
+      if (format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS)
          return FALSE;
 
-      if(format_desc->block.width != 1 ||
-         format_desc->block.height != 1)
+      if (format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN)
          return FALSE;
 
-      if(format_desc->colorspace != UTIL_FORMAT_COLORSPACE_RGB &&
-         format_desc->colorspace != UTIL_FORMAT_COLORSPACE_SRGB)
+      if (format_desc->block.width != 1 ||
+          format_desc->block.height != 1)
          return FALSE;
    }
 
-   if(tex_usage & (PIPE_BIND_DISPLAY_TARGET |
-                   PIPE_BIND_SCANOUT |
-                   PIPE_BIND_SHARED)) {
-      if(!winsys->is_displaytarget_format_supported(winsys, tex_usage, format))
+   if (bind & PIPE_BIND_DISPLAY_TARGET) {
+      if(!winsys->is_displaytarget_format_supported(winsys, bind, format))
          return FALSE;
    }
 
-   if(tex_usage & PIPE_BIND_DEPTH_STENCIL) {
-      if(format_desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
+   if (bind & PIPE_BIND_DEPTH_STENCIL) {
+      if (format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN)
+         return FALSE;
+
+      if (format_desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
          return FALSE;
 
       /* FIXME: Temporary restriction. See lp_state_fs.c. */
-      if(format_desc->block.bits != 32)
+      if (format_desc->block.bits != 32)
          return FALSE;
    }
 
+   if (format_desc->layout == UTIL_FORMAT_LAYOUT_S3TC) {
+      return util_format_s3tc_enabled;
+   }
+
+   /*
+    * Everything else should be supported by u_format.
+    */
    return TRUE;
 }
 
@@ -286,12 +288,26 @@ llvmpipe_create_screen(struct sw_winsys *winsys)
    screen->base.context_create = llvmpipe_create_context;
    screen->base.flush_frontbuffer = llvmpipe_flush_frontbuffer;
 
-   util_format_s3tc_init();
-
    llvmpipe_init_screen_resource_funcs(&screen->base);
    llvmpipe_init_screen_fence_funcs(&screen->base);
 
    lp_jit_screen_init(screen);
 
+#ifdef PIPE_OS_WINDOWS
+   /* Multithreading not supported on windows until conditions and barriers are
+    * properly implemented. */
+   screen->num_threads = 0;
+#else
+#ifdef PIPE_OS_EMBEDDED
+   screen->num_threads = 0;
+#else
+   screen->num_threads = util_cpu_caps.nr_cpus;
+#endif
+   screen->num_threads = debug_get_num_option("LP_NUM_THREADS", screen->num_threads);
+   screen->num_threads = MIN2(screen->num_threads, LP_MAX_THREADS);
+#endif
+
+   util_format_s3tc_init();
+
    return &screen->base;
 }
index af25e043cc97d386cbcc949ca5d69bc88a351545..4f394326103f20ae788b53a64346fd18bf1e6cb4 100644 (file)
@@ -58,6 +58,8 @@ struct llvmpipe_screen
 
    LLVMTypeRef context_ptr_type;
 
+   unsigned num_threads;
+
    /* Increments whenever textures are modified.  Contexts can track
     * this.
     */
index 6be13c60a5747b33212ea2612f323fc121a75484..21509560084cbef357801f240ad80e33440691bb 100644 (file)
@@ -74,6 +74,26 @@ lp_setup_get_current_scene(struct lp_setup_context *setup)
 }
 
 
+/**
+ * Check if the size of the current scene has exceeded the limit.
+ * If so, flush/render it.
+ */
+static void
+setup_check_scene_size_and_flush(struct lp_setup_context *setup)
+{
+   if (setup->scene) {
+      struct lp_scene *scene = lp_setup_get_current_scene(setup);
+      unsigned size = lp_scene_get_size(scene);
+
+      if (size > LP_MAX_SCENE_SIZE) {
+         /*printf("LLVMPIPE: scene size = %u, flushing.\n", size);*/
+         set_scene_state( setup, SETUP_FLUSHED );
+         /*assert(lp_scene_get_size(scene) == 0);*/
+      }
+   }
+}
+
+
 static void
 first_triangle( struct lp_setup_context *setup,
                 const float (*v0)[4],
@@ -132,14 +152,11 @@ static void reset_context( struct lp_setup_context *setup )
 
 /** Rasterize all scene's bins */
 static void
-lp_setup_rasterize_scene( struct lp_setup_context *setup,
-                          boolean write_depth )
+lp_setup_rasterize_scene( struct lp_setup_context *setup )
 {
    struct lp_scene *scene = lp_setup_get_current_scene(setup);
 
-   lp_scene_rasterize(scene,
-                      setup->rast,
-                      write_depth);
+   lp_scene_rasterize(scene, setup->rast);
 
    reset_context( setup );
 
@@ -190,7 +207,7 @@ execute_clears( struct lp_setup_context *setup )
    LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__);
 
    begin_binning( setup );
-   lp_setup_rasterize_scene( setup, TRUE );
+   lp_setup_rasterize_scene( setup );
 }
 
 
@@ -221,7 +238,7 @@ set_scene_state( struct lp_setup_context *setup,
       if (old_state == SETUP_CLEARED)
          execute_clears( setup );
       else
-         lp_setup_rasterize_scene( setup, TRUE );
+         lp_setup_rasterize_scene( setup );
       break;
 
    default:
@@ -243,7 +260,7 @@ lp_setup_flush( struct lp_setup_context *setup,
 
    if (setup->scene) {
       struct lp_scene *scene = lp_setup_get_current_scene(setup);
-      union lp_rast_cmd_arg dummy;
+      union lp_rast_cmd_arg dummy = {0};
 
       if (flags & (PIPE_FLUSH_SWAPBUFFERS |
                    PIPE_FLUSH_FRAME)) {
@@ -343,20 +360,25 @@ lp_setup_clear( struct lp_setup_context *setup,
 struct pipe_fence_handle *
 lp_setup_fence( struct lp_setup_context *setup )
 {
-   struct lp_scene *scene = lp_setup_get_current_scene(setup);
-   const unsigned rank = lp_scene_get_num_bins( scene ); /* xxx */
-   struct lp_fence *fence = lp_fence_create(rank);
+   if (setup->num_threads == 0) {
+      return NULL;
+   }
+   else {
+      struct lp_scene *scene = lp_setup_get_current_scene(setup);
+      const unsigned rank = lp_scene_get_num_bins( scene ); /* xxx */
+      struct lp_fence *fence = lp_fence_create(rank);
 
-   LP_DBG(DEBUG_SETUP, "%s rank %u\n", __FUNCTION__, rank);
+      LP_DBG(DEBUG_SETUP, "%s rank %u\n", __FUNCTION__, rank);
 
-   set_scene_state( setup, SETUP_ACTIVE );
+      set_scene_state( setup, SETUP_ACTIVE );
 
-   /* insert the fence into all command bins */
-   lp_scene_bin_everywhere( scene,
-                           lp_rast_fence,
-                           lp_rast_arg_fence(fence) );
+      /* insert the fence into all command bins */
+      lp_scene_bin_everywhere( scene,
+                               lp_rast_fence,
+                               lp_rast_arg_fence(fence) );
 
-   return (struct pipe_fence_handle *) fence;
+      return (struct pipe_fence_handle *) fence;
+   }
 }
 
 
@@ -591,10 +613,14 @@ lp_setup_is_resource_referenced( const struct lp_setup_context *setup,
 void
 lp_setup_update_state( struct lp_setup_context *setup )
 {
-   struct lp_scene *scene = lp_setup_get_current_scene(setup);
+   struct lp_scene *scene;
 
    LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__);
 
+   setup_check_scene_size_and_flush(setup);
+
+   scene = lp_setup_get_current_scene(setup);
+
    assert(setup->fs.current.jit_function);
 
    /* Some of the 'draw' pipeline stages may have changed some driver state.
@@ -715,7 +741,7 @@ lp_setup_update_state( struct lp_setup_context *setup )
           */
          for (i = 0; i < Elements(setup->fs.current_tex); i++) {
             if (setup->fs.current_tex[i])
-               lp_scene_texture_reference(scene, setup->fs.current_tex[i]);
+               lp_scene_add_resource_reference(scene, setup->fs.current_tex[i]);
          }
       }
    }
@@ -736,6 +762,8 @@ lp_setup_destroy( struct lp_setup_context *setup )
 
    reset_context( setup );
 
+   util_unreference_framebuffer_state(&setup->fb);
+
    for (i = 0; i < Elements(setup->fs.current_tex); i++) {
       pipe_resource_reference(&setup->fs.current_tex[i], NULL);
    }
@@ -750,6 +778,8 @@ lp_setup_destroy( struct lp_setup_context *setup )
       lp_scene_destroy(scene);
    }
 
+   lp_scene_queue_destroy(setup->empty_scenes);
+
    lp_rast_destroy( setup->rast );
 
    FREE( setup );
@@ -765,8 +795,9 @@ struct lp_setup_context *
 lp_setup_create( struct pipe_context *pipe,
                  struct draw_context *draw )
 {
-   unsigned i;
+   struct llvmpipe_screen *screen = llvmpipe_screen(pipe->screen);
    struct lp_setup_context *setup = CALLOC_STRUCT(lp_setup_context);
+   unsigned i;
 
    if (!setup)
       return NULL;
@@ -779,7 +810,8 @@ lp_setup_create( struct pipe_context *pipe,
 
    /* XXX: move this to the screen and share between contexts:
     */
-   setup->rast = lp_rast_create();
+   setup->num_threads = screen->num_threads;
+   setup->rast = lp_rast_create(screen->num_threads);
    if (!setup->rast) 
       goto fail;
 
index 4594f7597d5d7212ae604f43a8093646ac94b998..584764ce8ac76f24490c304b3e1f0eb542e464f3 100644 (file)
@@ -80,6 +80,7 @@ struct lp_setup_context
     * create/install this itself now.
     */
    struct draw_stage *vbuf;
+   unsigned num_threads;
    struct lp_rasterizer *rast;
    struct lp_scene *scenes[MAX_SCENES];  /**< all the scenes */
    struct lp_scene *scene;               /**< current scene being built */
index a401275478464828a7ca58cb6a7480767c2fcef3..5d3122e8ba23ef4a6995f429f13ff6fc6ce44c0f 100644 (file)
@@ -440,7 +440,12 @@ lp_setup_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
 static void
 lp_setup_vbuf_destroy(struct vbuf_render *vbr)
 {
-   lp_setup_destroy(lp_setup_context(vbr));
+   struct lp_setup_context *setup = lp_setup_context(vbr);
+   if (setup->vertex_buffer) {
+      align_free(setup->vertex_buffer);
+      setup->vertex_buffer = NULL;
+   }
+   lp_setup_destroy(setup);
 }
 
 
index dcbff190b62206657e2f4aa3353e0616970b70e4..18143807c915136af46c8b588a5428d0b7d1808f 100644 (file)
 #ifndef LP_STATE_H
 #define LP_STATE_H
 
-#include "gallivm/lp_bld.h"
-
 #include "pipe/p_state.h"
 #include "tgsi/tgsi_scan.h"
 #include "lp_jit.h"
+#include "gallivm/lp_bld.h"
 #include "gallivm/lp_bld_sample.h" /* for struct lp_sampler_static_state */
 
 
@@ -85,8 +84,6 @@ struct lp_fragment_shader_variant_key
 
 struct lp_fragment_shader_variant
 {
-   struct lp_fragment_shader *shader;
-
    struct lp_fragment_shader_variant_key key;
 
    LLVMValueRef function[2];
@@ -97,11 +94,7 @@ struct lp_fragment_shader_variant
 };
 
 
-/**
- * Subclass of pipe_shader_state (though it doesn't really need to be).
- *
- * This is starting to look an awful lot like a quad pipeline stage...
- */
+/** Subclass of pipe_shader_state */
 struct lp_fragment_shader
 {
    struct pipe_shader_state base;
@@ -109,140 +102,58 @@ struct lp_fragment_shader
    struct tgsi_shader_info info;
 
    struct lp_fragment_shader_variant *variants;
-
-   struct lp_fragment_shader_variant *current;
 };
 
 
 /** Subclass of pipe_shader_state */
-struct lp_vertex_shader {
+struct lp_vertex_shader
+{
    struct pipe_shader_state shader;
    struct draw_vertex_shader *draw_data;
 };
 
-struct lp_velems_state {
+
+/** Vertex element state */
+struct lp_velems_state
+{
    unsigned count;
    struct pipe_vertex_element velem[PIPE_MAX_ATTRIBS];
 };
 
 
-void *
-llvmpipe_create_blend_state(struct pipe_context *,
-                            const struct pipe_blend_state *);
-void llvmpipe_bind_blend_state(struct pipe_context *,
-                               void *);
-void llvmpipe_delete_blend_state(struct pipe_context *,
-                                 void *);
-
-void *
-llvmpipe_create_sampler_state(struct pipe_context *,
-                              const struct pipe_sampler_state *);
-void llvmpipe_bind_sampler_states(struct pipe_context *, unsigned, void **);
 void
-llvmpipe_bind_vertex_sampler_states(struct pipe_context *,
-                                    unsigned num_samplers,
-                                    void **samplers);
-void llvmpipe_delete_sampler_state(struct pipe_context *, void *);
-
-void *
-llvmpipe_create_depth_stencil_state(struct pipe_context *,
-                                    const struct pipe_depth_stencil_alpha_state *);
-void llvmpipe_bind_depth_stencil_state(struct pipe_context *, void *);
-void llvmpipe_delete_depth_stencil_state(struct pipe_context *, void *);
-
-void *
-llvmpipe_create_rasterizer_state(struct pipe_context *,
-                                 const struct pipe_rasterizer_state *);
-void llvmpipe_bind_rasterizer_state(struct pipe_context *, void *);
-void llvmpipe_delete_rasterizer_state(struct pipe_context *, void *);
-
-void llvmpipe_set_framebuffer_state( struct pipe_context *,
-                                     const struct pipe_framebuffer_state * );
-
-void llvmpipe_set_blend_color( struct pipe_context *pipe,
-                               const struct pipe_blend_color *blend_color );
-
-void llvmpipe_set_stencil_ref( struct pipe_context *pipe,
-                               const struct pipe_stencil_ref *stencil_ref );
-
-void llvmpipe_set_clip_state( struct pipe_context *,
-                              const struct pipe_clip_state * );
-
-void llvmpipe_set_constant_buffer(struct pipe_context *,
-                                  uint shader, uint index,
-                                  struct pipe_resource *buf);
-
-void *llvmpipe_create_fs_state(struct pipe_context *,
-                               const struct pipe_shader_state *);
-void llvmpipe_bind_fs_state(struct pipe_context *, void *);
-void llvmpipe_delete_fs_state(struct pipe_context *, void *);
-void *llvmpipe_create_vs_state(struct pipe_context *,
-                               const struct pipe_shader_state *);
-void llvmpipe_bind_vs_state(struct pipe_context *, void *);
-void llvmpipe_delete_vs_state(struct pipe_context *, void *);
-
-void *llvmpipe_create_vertex_elements_state(struct pipe_context *,
-                                            unsigned count,
-                                            const struct pipe_vertex_element *);
-void llvmpipe_bind_vertex_elements_state(struct pipe_context *, void *);
-void llvmpipe_delete_vertex_elements_state(struct pipe_context *, void *);
-
-void llvmpipe_set_polygon_stipple( struct pipe_context *,
-                                   const struct pipe_poly_stipple * );
-
-void llvmpipe_set_scissor_state( struct pipe_context *,
-                                 const struct pipe_scissor_state * );
-
-void llvmpipe_set_fragment_sampler_views(struct pipe_context *,
-                                         unsigned num,
-                                         struct pipe_sampler_view **);
+llvmpipe_set_framebuffer_state(struct pipe_context *,
+                               const struct pipe_framebuffer_state *);
 
 void
-llvmpipe_set_vertex_sampler_views(struct pipe_context *,
-                                  unsigned num,
-                                  struct pipe_sampler_view **);
-
-struct pipe_sampler_view *
-llvmpipe_create_sampler_view(struct pipe_context *pipe,
-                            struct pipe_resource *texture,
-                            const struct pipe_sampler_view *templ);
+llvmpipe_update_fs(struct llvmpipe_context *lp);
 
 void
-llvmpipe_sampler_view_destroy(struct pipe_context *pipe,
-                              struct pipe_sampler_view *view);
+llvmpipe_update_derived(struct llvmpipe_context *llvmpipe);
 
-void llvmpipe_set_viewport_state( struct pipe_context *,
-                                  const struct pipe_viewport_state * );
-
-void llvmpipe_set_vertex_buffers(struct pipe_context *,
-                                 unsigned count,
-                                 const struct pipe_vertex_buffer *);
+void
+llvmpipe_init_sampler_funcs(struct llvmpipe_context *llvmpipe);
 
-void llvmpipe_update_fs(struct llvmpipe_context *lp);
+void
+llvmpipe_init_blend_funcs(struct llvmpipe_context *llvmpipe);
 
-void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe );
+void
+llvmpipe_init_vertex_funcs(struct llvmpipe_context *llvmpipe);
 
+void
+llvmpipe_init_draw_funcs(struct llvmpipe_context *llvmpipe);
 
-void llvmpipe_draw_arrays(struct pipe_context *pipe, unsigned mode,
-                            unsigned start, unsigned count);
+void
+llvmpipe_init_clip_funcs(struct llvmpipe_context *llvmpipe);
 
-void llvmpipe_draw_elements(struct pipe_context *pipe,
-                              struct pipe_resource *indexBuffer,
-                              unsigned indexSize, int indexBias,
-                              unsigned mode, unsigned start, unsigned count);
 void
-llvmpipe_draw_range_elements(struct pipe_context *pipe,
-                             struct pipe_resource *indexBuffer,
-                             unsigned indexSize, int indexBias,
-                             unsigned min_index,
-                             unsigned max_index,
-                             unsigned mode, unsigned start, unsigned count);
+llvmpipe_init_fs_funcs(struct llvmpipe_context *llvmpipe);
 
 void
-llvmpipe_map_texture_surfaces(struct llvmpipe_context *lp);
+llvmpipe_init_vs_funcs(struct llvmpipe_context *llvmpipe);
 
 void
-llvmpipe_unmap_texture_surfaces(struct llvmpipe_context *lp);
+llvmpipe_init_rasterizer_funcs(struct llvmpipe_context *llvmpipe);
 
 
 #endif
index 4ee28473e8069fcd5c401dbc93aedc4ee20e2d20..8569507f4e5e94c4860e654e91587dd82061b938 100644 (file)
 #include "lp_state.h"
 
 
-void *
+static void *
 llvmpipe_create_blend_state(struct pipe_context *pipe,
                             const struct pipe_blend_state *blend)
 {
    return mem_dup(blend, sizeof(*blend));
 }
 
-void llvmpipe_bind_blend_state( struct pipe_context *pipe,
-                                void *blend )
+
+static void
+llvmpipe_bind_blend_state(struct pipe_context *pipe, void *blend)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
 
@@ -62,15 +63,17 @@ void llvmpipe_bind_blend_state( struct pipe_context *pipe,
    llvmpipe->dirty |= LP_NEW_BLEND;
 }
 
-void llvmpipe_delete_blend_state(struct pipe_context *pipe,
-                                 void *blend)
+
+static void
+llvmpipe_delete_blend_state(struct pipe_context *pipe, void *blend)
 {
    FREE( blend );
 }
 
 
-void llvmpipe_set_blend_color( struct pipe_context *pipe,
-                            const struct pipe_blend_color *blend_color )
+static void
+llvmpipe_set_blend_color(struct pipe_context *pipe,
+                         const struct pipe_blend_color *blend_color)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
 
@@ -93,14 +96,15 @@ void llvmpipe_set_blend_color( struct pipe_context *pipe,
  */
 
 
-void *
+static void *
 llvmpipe_create_depth_stencil_state(struct pipe_context *pipe,
                                    const struct pipe_depth_stencil_alpha_state *depth_stencil)
 {
    return mem_dup(depth_stencil, sizeof(*depth_stencil));
 }
 
-void
+
+static void
 llvmpipe_bind_depth_stencil_state(struct pipe_context *pipe,
                                   void *depth_stencil)
 {
@@ -116,14 +120,17 @@ llvmpipe_bind_depth_stencil_state(struct pipe_context *pipe,
    llvmpipe->dirty |= LP_NEW_DEPTH_STENCIL_ALPHA;
 }
 
-void
+
+static void
 llvmpipe_delete_depth_stencil_state(struct pipe_context *pipe, void *depth)
 {
    FREE( depth );
 }
 
-void llvmpipe_set_stencil_ref( struct pipe_context *pipe,
-                               const struct pipe_stencil_ref *stencil_ref )
+
+static void
+llvmpipe_set_stencil_ref(struct pipe_context *pipe,
+                         const struct pipe_stencil_ref *stencil_ref)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
 
@@ -142,3 +149,18 @@ void llvmpipe_set_stencil_ref( struct pipe_context *pipe,
 }
 
 
+void
+llvmpipe_init_blend_funcs(struct llvmpipe_context *llvmpipe)
+{
+   llvmpipe->pipe.create_blend_state = llvmpipe_create_blend_state;
+   llvmpipe->pipe.bind_blend_state   = llvmpipe_bind_blend_state;
+   llvmpipe->pipe.delete_blend_state = llvmpipe_delete_blend_state;
+
+   llvmpipe->pipe.create_depth_stencil_alpha_state = llvmpipe_create_depth_stencil_state;
+   llvmpipe->pipe.bind_depth_stencil_alpha_state   = llvmpipe_bind_depth_stencil_state;
+   llvmpipe->pipe.delete_depth_stencil_alpha_state = llvmpipe_delete_depth_stencil_state;
+
+   llvmpipe->pipe.set_blend_color = llvmpipe_set_blend_color;
+
+   llvmpipe->pipe.set_stencil_ref = llvmpipe_set_stencil_ref;
+}
index df68f27acc972287f9c843f0aa8496bc878edd11..32ae079cc153eb302f8e97e20be53b4b61411b4c 100644 (file)
@@ -32,8 +32,9 @@
 #include "draw/draw_context.h"
 
 
-void llvmpipe_set_clip_state( struct pipe_context *pipe,
-                            const struct pipe_clip_state *clip )
+static void
+llvmpipe_set_clip_state(struct pipe_context *pipe,
+                        const struct pipe_clip_state *clip)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
 
@@ -42,8 +43,9 @@ void llvmpipe_set_clip_state( struct pipe_context *pipe,
 }
 
 
-void llvmpipe_set_viewport_state( struct pipe_context *pipe,
-                                  const struct pipe_viewport_state *viewport )
+static void
+llvmpipe_set_viewport_state(struct pipe_context *pipe,
+                            const struct pipe_viewport_state *viewport)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
 
@@ -55,8 +57,9 @@ void llvmpipe_set_viewport_state( struct pipe_context *pipe,
 }
 
 
-void llvmpipe_set_scissor_state( struct pipe_context *pipe,
-                                 const struct pipe_scissor_state *scissor )
+static void
+llvmpipe_set_scissor_state(struct pipe_context *pipe,
+                           const struct pipe_scissor_state *scissor)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
 
@@ -67,8 +70,9 @@ void llvmpipe_set_scissor_state( struct pipe_context *pipe,
 }
 
 
-void llvmpipe_set_polygon_stipple( struct pipe_context *pipe,
-                                   const struct pipe_poly_stipple *stipple )
+static void
+llvmpipe_set_polygon_stipple(struct pipe_context *pipe,
+                             const struct pipe_poly_stipple *stipple)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
 
@@ -77,3 +81,14 @@ void llvmpipe_set_polygon_stipple( struct pipe_context *pipe,
    llvmpipe->poly_stipple = *stipple; /* struct copy */
    llvmpipe->dirty |= LP_NEW_STIPPLE;
 }
+
+
+
+void
+llvmpipe_init_clip_funcs(struct llvmpipe_context *llvmpipe)
+{
+   llvmpipe->pipe.set_clip_state = llvmpipe_set_clip_state;
+   llvmpipe->pipe.set_polygon_stipple = llvmpipe_set_polygon_stipple;
+   llvmpipe->pipe.set_scissor_state = llvmpipe_set_scissor_state;
+   llvmpipe->pipe.set_viewport_state = llvmpipe_set_viewport_state;
+}
index 59d5a440c03f001aa1ffb7c6873e5cc5c4f5165a..513e62e39e5d15068502f72a06f8e37b7764bc98 100644 (file)
@@ -403,9 +403,7 @@ generate_fs(struct llvmpipe_context *lp,
             LLVMValueRef step2_ptr)
 {
    const struct tgsi_token *tokens = shader->base.tokens;
-   LLVMTypeRef elem_type;
    LLVMTypeRef vec_type;
-   LLVMTypeRef int_vec_type;
    LLVMValueRef consts_ptr;
    LLVMValueRef outputs[PIPE_MAX_SHADER_OUTPUTS][NUM_CHANNELS];
    LLVMValueRef z = interp->pos[2];
@@ -422,9 +420,7 @@ generate_fs(struct llvmpipe_context *lp,
    stencil_refs[0] = lp_jit_context_stencil_ref_front_value(builder, context_ptr);
    stencil_refs[1] = lp_jit_context_stencil_ref_back_value(builder, context_ptr);
 
-   elem_type = lp_build_elem_type(type);
    vec_type = lp_build_vec_type(type);
-   int_vec_type = lp_build_int_vec_type(type);
 
    consts_ptr = lp_jit_context_constants(builder, context_ptr);
 
@@ -474,7 +470,7 @@ generate_fs(struct llvmpipe_context *lp,
 
    lp_build_tgsi_soa(builder, tokens, type, &mask,
                      consts_ptr, interp->pos, interp->inputs,
-                     outputs, sampler);
+                     outputs, sampler, &shader->info);
 
    for (attrib = 0; attrib < shader->info.num_outputs; ++attrib) {
       for(chan = 0; chan < NUM_CHANNELS; ++chan) {
@@ -546,7 +542,6 @@ generate_blend(const struct pipe_blend_state *blend,
    struct lp_build_flow_context *flow;
    struct lp_build_mask_context mask_ctx;
    LLVMTypeRef vec_type;
-   LLVMTypeRef int_vec_type;
    LLVMValueRef const_ptr;
    LLVMValueRef con[4];
    LLVMValueRef dst[4];
@@ -561,7 +556,6 @@ generate_blend(const struct pipe_blend_state *blend,
    lp_build_mask_begin(&mask_ctx, flow, type, mask);
 
    vec_type = lp_build_vec_type(type);
-   int_vec_type = lp_build_int_vec_type(type);
 
    const_ptr = lp_jit_context_blend_color(builder, context_ptr);
    const_ptr = LLVMBuildBitCast(builder, const_ptr,
@@ -624,10 +618,8 @@ 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 blend_int_vec_type;
    LLVMTypeRef arg_types[15];
    LLVMTypeRef func_type;
    LLVMTypeRef int32_vec4_type = lp_build_int32_vec4_type();
@@ -682,11 +674,9 @@ 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);
-   blend_int_vec_type = lp_build_int_vec_type(blend_type);
 
    arg_types[0] = screen->context_ptr_type;            /* context */
    arg_types[1] = LLVMInt32Type();                     /* x */
@@ -945,7 +935,6 @@ generate_variant(struct llvmpipe_context *lp,
    if(!variant)
       return NULL;
 
-   variant->shader = shader;
    memcpy(&variant->key, key, sizeof *key);
 
    generate_fragment(lp, shader, variant, 0);
@@ -959,7 +948,7 @@ generate_variant(struct llvmpipe_context *lp,
 }
 
 
-void *
+static void *
 llvmpipe_create_fs_state(struct pipe_context *pipe,
                          const struct pipe_shader_state *templ)
 {
@@ -975,11 +964,16 @@ llvmpipe_create_fs_state(struct pipe_context *pipe,
    /* we need to keep a local copy of the tokens */
    shader->base.tokens = tgsi_dup_tokens(templ->tokens);
 
+   if (LP_DEBUG & DEBUG_TGSI) {
+      debug_printf("llvmpipe: Create fragment shader %p:\n", (void *) shader);
+      tgsi_dump(templ->tokens, 0);
+   }
+
    return shader;
 }
 
 
-void
+static void
 llvmpipe_bind_fs_state(struct pipe_context *pipe, void *fs)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -995,7 +989,7 @@ llvmpipe_bind_fs_state(struct pipe_context *pipe, void *fs)
 }
 
 
-void
+static void
 llvmpipe_delete_fs_state(struct pipe_context *pipe, void *fs)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -1038,7 +1032,7 @@ llvmpipe_delete_fs_state(struct pipe_context *pipe, void *fs)
 
 
 
-void
+static void
 llvmpipe_set_constant_buffer(struct pipe_context *pipe,
                              uint shader, uint index,
                              struct pipe_resource *constants)
@@ -1112,8 +1106,8 @@ make_variant_key(struct llvmpipe_context *lp,
       unsigned chan;
 
       format_desc = util_format_description(lp->framebuffer.cbufs[i]->format);
-      assert(format_desc->layout == UTIL_FORMAT_COLORSPACE_RGB ||
-             format_desc->layout == UTIL_FORMAT_COLORSPACE_SRGB);
+      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;
 
@@ -1169,8 +1163,6 @@ llvmpipe_update_fs(struct llvmpipe_context *lp)
       LP_COUNT_ADD(nr_llvm_compiles, 2);  /* emit vs. omit in/out test */
    }
 
-   shader->current = variant;
-
    /* TODO: put this in the variant */
    /* TODO: most of these can be relaxed, in particular the colormask */
    opaque = !key.blend.logicop_enable &&
@@ -1184,7 +1176,19 @@ llvmpipe_update_fs(struct llvmpipe_context *lp)
             ? TRUE : FALSE;
 
    lp_setup_set_fs_functions(lp->setup, 
-                             shader->current->jit_function[RAST_WHOLE],
-                             shader->current->jit_function[RAST_EDGE_TEST],
+                             variant->jit_function[RAST_WHOLE],
+                             variant->jit_function[RAST_EDGE_TEST],
                              opaque);
 }
+
+
+
+void
+llvmpipe_init_fs_funcs(struct llvmpipe_context *llvmpipe)
+{
+   llvmpipe->pipe.create_fs_state = llvmpipe_create_fs_state;
+   llvmpipe->pipe.bind_fs_state   = llvmpipe_bind_fs_state;
+   llvmpipe->pipe.delete_fs_state = llvmpipe_delete_fs_state;
+
+   llvmpipe->pipe.set_constant_buffer = llvmpipe_set_constant_buffer;
+}
index 47f65fe72d186d035afea86835e1655b56f6e793..622eb47ff4535629c2863155e40af2ef1539137b 100644 (file)
@@ -34,7 +34,7 @@
 
 
 
-void *
+static void *
 llvmpipe_create_rasterizer_state(struct pipe_context *pipe,
                                  const struct pipe_rasterizer_state *rast)
 {
@@ -46,7 +46,7 @@ llvmpipe_create_rasterizer_state(struct pipe_context *pipe,
 
 
 
-void
+static void
 llvmpipe_bind_rasterizer_state(struct pipe_context *pipe, void *handle)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -71,16 +71,27 @@ llvmpipe_bind_rasterizer_state(struct pipe_context *pipe, void *handle)
                    llvmpipe->rasterizer->front_winding == PIPE_WINDING_CCW,
                    llvmpipe->rasterizer->scissor,
                    llvmpipe->rasterizer->gl_rasterization_rules);
+      lp_setup_set_flatshade_first( llvmpipe->setup,
+                   llvmpipe->rasterizer->flatshade_first);
    }
 
    llvmpipe->dirty |= LP_NEW_RASTERIZER;
 }
 
 
-void llvmpipe_delete_rasterizer_state(struct pipe_context *pipe,
-                                      void *rasterizer)
+static void
+llvmpipe_delete_rasterizer_state(struct pipe_context *pipe,
+                                 void *rasterizer)
 {
    FREE( rasterizer );
 }
 
 
+
+void
+llvmpipe_init_rasterizer_funcs(struct llvmpipe_context *llvmpipe)
+{
+   llvmpipe->pipe.create_rasterizer_state = llvmpipe_create_rasterizer_state;
+   llvmpipe->pipe.bind_rasterizer_state   = llvmpipe_bind_rasterizer_state;
+   llvmpipe->pipe.delete_rasterizer_state = llvmpipe_delete_rasterizer_state;
+}
index 3552ff50ce1b73420eb2996d76d89847ead00e47..55d43368a3e6b4ba06674dbd0063c12b528d8b38 100644 (file)
@@ -41,7 +41,7 @@
 
 
 
-void *
+static void *
 llvmpipe_create_sampler_state(struct pipe_context *pipe,
                               const struct pipe_sampler_state *sampler)
 {
@@ -49,7 +49,7 @@ llvmpipe_create_sampler_state(struct pipe_context *pipe,
 }
 
 
-void
+static void
 llvmpipe_bind_sampler_states(struct pipe_context *pipe,
                              unsigned num, void **sampler)
 {
@@ -76,7 +76,7 @@ llvmpipe_bind_sampler_states(struct pipe_context *pipe,
 }
 
 
-void
+static void
 llvmpipe_bind_vertex_sampler_states(struct pipe_context *pipe,
                                     unsigned num_samplers,
                                     void **samplers)
@@ -104,7 +104,7 @@ llvmpipe_bind_vertex_sampler_states(struct pipe_context *pipe,
 }
 
 
-void
+static void
 llvmpipe_set_fragment_sampler_views(struct pipe_context *pipe,
                                     unsigned num,
                                     struct pipe_sampler_view **views)
@@ -133,7 +133,7 @@ llvmpipe_set_fragment_sampler_views(struct pipe_context *pipe,
 }
 
 
-void
+static void
 llvmpipe_set_vertex_sampler_views(struct pipe_context *pipe,
                                   unsigned num,
                                   struct pipe_sampler_view **views)
@@ -163,7 +163,7 @@ llvmpipe_set_vertex_sampler_views(struct pipe_context *pipe,
 }
 
 
-struct pipe_sampler_view *
+static struct pipe_sampler_view *
 llvmpipe_create_sampler_view(struct pipe_context *pipe,
                             struct pipe_resource *texture,
                             const struct pipe_sampler_view *templ)
@@ -182,7 +182,7 @@ llvmpipe_create_sampler_view(struct pipe_context *pipe,
 }
 
 
-void
+static void
 llvmpipe_sampler_view_destroy(struct pipe_context *pipe,
                               struct pipe_sampler_view *view)
 {
@@ -191,7 +191,7 @@ llvmpipe_sampler_view_destroy(struct pipe_context *pipe,
 }
 
 
-void
+static void
 llvmpipe_delete_sampler_state(struct pipe_context *pipe,
                               void *sampler)
 {
@@ -199,4 +199,16 @@ llvmpipe_delete_sampler_state(struct pipe_context *pipe,
 }
 
 
-
+void
+llvmpipe_init_sampler_funcs(struct llvmpipe_context *llvmpipe)
+{
+   llvmpipe->pipe.create_sampler_state = llvmpipe_create_sampler_state;
+
+   llvmpipe->pipe.bind_fragment_sampler_states  = llvmpipe_bind_sampler_states;
+   llvmpipe->pipe.bind_vertex_sampler_states  = llvmpipe_bind_vertex_sampler_states;
+   llvmpipe->pipe.set_fragment_sampler_views = llvmpipe_set_fragment_sampler_views;
+   llvmpipe->pipe.set_vertex_sampler_views = llvmpipe_set_vertex_sampler_views;
+   llvmpipe->pipe.create_sampler_view = llvmpipe_create_sampler_view;
+   llvmpipe->pipe.sampler_view_destroy = llvmpipe_sampler_view_destroy;
+   llvmpipe->pipe.delete_sampler_state = llvmpipe_delete_sampler_state;
+}
index 7d86c5750c5e7e22d4e0b303235a8947bcd17631..63b8f27b39c026c1a6ce7335edfb86582af5abe9 100644 (file)
@@ -52,8 +52,8 @@ llvmpipe_set_framebuffer_state(struct pipe_context *pipe,
 
    boolean changed = !util_framebuffer_state_equal(&lp->framebuffer, fb);
 
-   assert(fb->width <= MAXWIDTH);
-   assert(fb->height <= MAXHEIGHT);
+   assert(fb->width <= LP_MAX_WIDTH);
+   assert(fb->height <= LP_MAX_HEIGHT);
 
    if (changed) {
 
index f6427aa908e2c84c8acddf3738a9bccc672901d0..113f13db0189c4935b62a2a1ad67f18798631d67 100644 (file)
@@ -35,7 +35,7 @@
 #include "draw/draw_context.h"
 
 
-void *
+static void *
 llvmpipe_create_vertex_elements_state(struct pipe_context *pipe,
                                       unsigned count,
                                       const struct pipe_vertex_element *attribs)
@@ -50,7 +50,7 @@ llvmpipe_create_vertex_elements_state(struct pipe_context *pipe,
    return velems;
 }
 
-void
+static void
 llvmpipe_bind_vertex_elements_state(struct pipe_context *pipe,
                                     void *velems)
 {
@@ -65,13 +65,13 @@ llvmpipe_bind_vertex_elements_state(struct pipe_context *pipe,
       draw_set_vertex_elements(llvmpipe->draw, lp_velems->count, lp_velems->velem);
 }
 
-void
+static void
 llvmpipe_delete_vertex_elements_state(struct pipe_context *pipe, void *velems)
 {
    FREE( velems );
 }
 
-void
+static void
 llvmpipe_set_vertex_buffers(struct pipe_context *pipe,
                             unsigned count,
                             const struct pipe_vertex_buffer *buffers)
@@ -87,3 +87,15 @@ llvmpipe_set_vertex_buffers(struct pipe_context *pipe,
 
    draw_set_vertex_buffers(llvmpipe->draw, count, buffers);
 }
+
+
+
+void
+llvmpipe_init_vertex_funcs(struct llvmpipe_context *llvmpipe)
+{
+   llvmpipe->pipe.create_vertex_elements_state = llvmpipe_create_vertex_elements_state;
+   llvmpipe->pipe.bind_vertex_elements_state = llvmpipe_bind_vertex_elements_state;
+   llvmpipe->pipe.delete_vertex_elements_state = llvmpipe_delete_vertex_elements_state;
+
+   llvmpipe->pipe.set_vertex_buffers = llvmpipe_set_vertex_buffers;
+}
index 884e3878e621af5fea2eb76220b4f6c39549ab7e..f2d880899060ad31abcd7a71fa1776a1cfefc8ad 100644 (file)
 
 
 #include "pipe/p_defines.h"
+#include "tgsi/tgsi_dump.h"
 #include "tgsi/tgsi_parse.h"
 #include "util/u_memory.h"
 #include "draw/draw_context.h"
 
 #include "lp_context.h"
+#include "lp_debug.h"
 #include "lp_state.h"
 
 
-void *
+static void *
 llvmpipe_create_vs_state(struct pipe_context *pipe,
                          const struct pipe_shader_state *templ)
 {
@@ -57,6 +59,11 @@ llvmpipe_create_vs_state(struct pipe_context *pipe,
    if (state->draw_data == NULL) 
       goto fail;
 
+   if (LP_DEBUG & DEBUG_TGSI) {
+      debug_printf("llvmpipe: Create vertex shader %p:\n", (void *) state);
+      tgsi_dump(templ->tokens, 0);
+   }
+
    return state;
 
 fail:
@@ -69,7 +76,7 @@ fail:
 }
 
 
-void
+static void
 llvmpipe_bind_vs_state(struct pipe_context *pipe, void *_vs)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -87,7 +94,7 @@ llvmpipe_bind_vs_state(struct pipe_context *pipe, void *_vs)
 }
 
 
-void
+static void
 llvmpipe_delete_vs_state(struct pipe_context *pipe, void *vs)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -99,3 +106,13 @@ llvmpipe_delete_vs_state(struct pipe_context *pipe, void *vs)
    FREE( (void *)state->shader.tokens );
    FREE( state );
 }
+
+
+
+void
+llvmpipe_init_vs_funcs(struct llvmpipe_context *llvmpipe)
+{
+   llvmpipe->pipe.create_vs_state = llvmpipe_create_vs_state;
+   llvmpipe->pipe.bind_vs_state   = llvmpipe_bind_vs_state;
+   llvmpipe->pipe.delete_vs_state = llvmpipe_delete_vs_state;
+}
index 1a116989d4c6ce539288782cfe14c51e35fd9f7c..8bd83f576f470f7c0ffec13859ba0dd910c08488 100644 (file)
@@ -28,9 +28,9 @@
 #include "util/u_rect.h"
 #include "lp_context.h"
 #include "lp_flush.h"
+#include "lp_limits.h"
 #include "lp_surface.h"
 #include "lp_texture.h"
-#include "lp_tile_size.h"
 
 
 /**
@@ -59,19 +59,19 @@ lp_surface_copy(struct pipe_context *pipe,
    struct llvmpipe_resource *dst_tex = llvmpipe_resource(dst->texture);
    const enum pipe_format format = src_tex->base.format;
 
-   llvmpipe_flush_texture(pipe,
-                          dst->texture, dst->face, dst->level,
-                          0, /* flush_flags */
-                          FALSE, /* read_only */
-                          FALSE, /* cpu_access */
-                          FALSE); /* do_not_flush */
+   llvmpipe_flush_resource(pipe,
+                           dst->texture, dst->face, dst->level,
+                           0, /* flush_flags */
+                           FALSE, /* read_only */
+                           FALSE, /* cpu_access */
+                           FALSE); /* do_not_block */
 
-   llvmpipe_flush_texture(pipe,
-                          src->texture, src->face, src->level,
-                          0, /* flush_flags */
-                          TRUE, /* read_only */
-                          FALSE, /* cpu_access */
-                          FALSE); /* do_not_flush */
+   llvmpipe_flush_resource(pipe,
+                           src->texture, src->face, src->level,
+                           0, /* flush_flags */
+                           TRUE, /* read_only */
+                           FALSE, /* cpu_access */
+                           FALSE); /* do_not_block */
 
    /*
    printf("surface copy from %u to %u: %u,%u to %u,%u %u x %u\n",
@@ -146,7 +146,7 @@ lp_surface_copy(struct pipe_context *pipe,
 
 
 void
-lp_init_surface_functions(struct llvmpipe_context *lp)
+llvmpipe_init_surface_functions(struct llvmpipe_context *lp)
 {
    lp->pipe.surface_copy = lp_surface_copy;
    lp->pipe.surface_fill = util_surface_fill;
index 4d78a53c4f50af115258900ce0441a0b0267961c..b1b896ebd903e0e700024abbff98bc5328fedf5d 100644 (file)
@@ -36,7 +36,7 @@ struct llvmpipe_context;
 
 
 extern void
-lp_init_surface_functions(struct llvmpipe_context *lp);
+llvmpipe_init_surface_functions(struct llvmpipe_context *lp);
 
 
 #endif /* LP_SURFACE_H */
index 818f7a9a5624e585f7ddb2fbd0f20b0548504685..fae7bf3fcf2ef6a5f1cc35dc7255c0ba818b96a5 100644 (file)
@@ -154,7 +154,6 @@ add_blend_test(LLVMModuleRef module,
                enum vector_mode mode,
                struct lp_type type)
 {
-   LLVMTypeRef ret_type;
    LLVMTypeRef vec_type;
    LLVMTypeRef args[4];
    LLVMValueRef func;
@@ -165,7 +164,6 @@ add_blend_test(LLVMModuleRef module,
    LLVMBasicBlockRef block;
    LLVMBuilderRef builder;
 
-   ret_type = LLVMInt64Type();
    vec_type = lp_build_vec_type(type);
 
    args[3] = args[2] = args[1] = args[0] = LLVMPointerType(vec_type, 0);
diff --git a/src/gallium/drivers/llvmpipe/lp_tex_sample.c b/src/gallium/drivers/llvmpipe/lp_tex_sample.c
new file mode 100644 (file)
index 0000000..74b7393
--- /dev/null
@@ -0,0 +1,216 @@
+/**************************************************************************
+ * 
+ * Copyright 2009 VMware, Inc.
+ * All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, 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.
+ * 
+ **************************************************************************/
+
+/**
+ * Texture sampling code generation
+ *
+ * This file is nothing more than ugly glue between three largely independent
+ * entities:
+ * - TGSI -> LLVM translation (i.e., lp_build_tgsi_soa)
+ * - texture sampling code generation (i.e., lp_build_sample_soa)
+ * - LLVM pipe driver
+ *
+ * All interesting code is in the functions mentioned above. There is really
+ * nothing to see here.
+ *
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+#include "pipe/p_defines.h"
+#include "pipe/p_shader_tokens.h"
+#include "gallivm/lp_bld_debug.h"
+#include "gallivm/lp_bld_type.h"
+#include "gallivm/lp_bld_sample.h"
+#include "gallivm/lp_bld_tgsi.h"
+#include "lp_jit.h"
+#include "lp_tex_sample.h"
+
+
+/**
+ * This provides the bridge between the sampler state store in
+ * lp_jit_context and lp_jit_texture and the sampler code
+ * generator. It provides the texture layout information required by
+ * the texture sampler code generator in terms of the state stored in
+ * lp_jit_context and lp_jit_texture in runtime.
+ */
+struct llvmpipe_sampler_dynamic_state
+{
+   struct lp_sampler_dynamic_state base;
+
+   const struct lp_sampler_static_state *static_state;
+
+   LLVMValueRef context_ptr;
+};
+
+
+/**
+ * This is the bridge between our sampler and the TGSI translator.
+ */
+struct lp_llvm_sampler_soa
+{
+   struct lp_build_sampler_soa base;
+
+   struct llvmpipe_sampler_dynamic_state dynamic_state;
+};
+
+
+/**
+ * Fetch the specified member of the lp_jit_texture structure.
+ * \param emit_load  if TRUE, emit the LLVM load instruction to actually
+ *                   fetch the field's value.  Otherwise, just emit the
+ *                   GEP code to address the field.
+ *
+ * @sa http://llvm.org/docs/GetElementPtr.html
+ */
+static LLVMValueRef
+lp_llvm_texture_member(struct lp_sampler_dynamic_state *base,
+                       LLVMBuilderRef builder,
+                       unsigned unit,
+                       unsigned member_index,
+                       const char *member_name,
+                       boolean emit_load)
+{
+   struct llvmpipe_sampler_dynamic_state *state =
+      (struct llvmpipe_sampler_dynamic_state *)base;
+   LLVMValueRef indices[4];
+   LLVMValueRef ptr;
+   LLVMValueRef res;
+
+   assert(unit < PIPE_MAX_SAMPLERS);
+
+   /* context[0] */
+   indices[0] = LLVMConstInt(LLVMInt32Type(), 0, 0);
+   /* context[0].textures */
+   indices[1] = LLVMConstInt(LLVMInt32Type(), LP_JIT_CTX_TEXTURES, 0);
+   /* context[0].textures[unit] */
+   indices[2] = LLVMConstInt(LLVMInt32Type(), unit, 0);
+   /* context[0].textures[unit].member */
+   indices[3] = LLVMConstInt(LLVMInt32Type(), member_index, 0);
+
+   ptr = LLVMBuildGEP(builder, state->context_ptr, indices, Elements(indices), "");
+
+   if (emit_load)
+      res = LLVMBuildLoad(builder, ptr, "");
+   else
+      res = ptr;
+
+   lp_build_name(res, "context.texture%u.%s", unit, member_name);
+
+   return res;
+}
+
+
+/**
+ * Helper macro to instantiate the functions that generate the code to
+ * fetch the members of lp_jit_texture to fulfill the sampler code
+ * generator requests.
+ *
+ * This complexity is the price we have to pay to keep the texture
+ * sampler code generator a reusable module without dependencies to
+ * llvmpipe internals.
+ */
+#define LP_LLVM_TEXTURE_MEMBER(_name, _index, _emit_load)  \
+   static LLVMValueRef \
+   lp_llvm_texture_##_name( struct lp_sampler_dynamic_state *base, \
+                            LLVMBuilderRef builder, \
+                            unsigned unit) \
+   { \
+      return lp_llvm_texture_member(base, builder, unit, _index, #_name, _emit_load ); \
+   }
+
+
+LP_LLVM_TEXTURE_MEMBER(width,      LP_JIT_TEXTURE_WIDTH, TRUE)
+LP_LLVM_TEXTURE_MEMBER(height,     LP_JIT_TEXTURE_HEIGHT, TRUE)
+LP_LLVM_TEXTURE_MEMBER(depth,      LP_JIT_TEXTURE_DEPTH, TRUE)
+LP_LLVM_TEXTURE_MEMBER(last_level, LP_JIT_TEXTURE_LAST_LEVEL, TRUE)
+LP_LLVM_TEXTURE_MEMBER(row_stride, LP_JIT_TEXTURE_ROW_STRIDE, FALSE)
+LP_LLVM_TEXTURE_MEMBER(img_stride, LP_JIT_TEXTURE_IMG_STRIDE, FALSE)
+LP_LLVM_TEXTURE_MEMBER(data_ptr,   LP_JIT_TEXTURE_DATA, FALSE)
+
+
+static void
+lp_llvm_sampler_soa_destroy(struct lp_build_sampler_soa *sampler)
+{
+   FREE(sampler);
+}
+
+
+/**
+ * Fetch filtered values from texture.
+ * The 'texel' parameter returns four vectors corresponding to R, G, B, A.
+ */
+static void
+lp_llvm_sampler_soa_emit_fetch_texel(struct lp_build_sampler_soa *base,
+                                     LLVMBuilderRef builder,
+                                     struct lp_type type,
+                                     unsigned unit,
+                                     unsigned num_coords,
+                                     const LLVMValueRef *coords,
+                                     LLVMValueRef lodbias,
+                                     LLVMValueRef *texel)
+{
+   struct lp_llvm_sampler_soa *sampler = (struct lp_llvm_sampler_soa *)base;
+
+   assert(unit < PIPE_MAX_SAMPLERS);
+
+   lp_build_sample_soa(builder,
+                       &sampler->dynamic_state.static_state[unit],
+                       &sampler->dynamic_state.base,
+                       type,
+                       unit,
+                       num_coords,
+                       coords,
+                       lodbias,
+                       texel);
+}
+
+
+struct lp_build_sampler_soa *
+lp_llvm_sampler_soa_create(const struct lp_sampler_static_state *static_state,
+                           LLVMValueRef context_ptr)
+{
+   struct lp_llvm_sampler_soa *sampler;
+
+   sampler = CALLOC_STRUCT(lp_llvm_sampler_soa);
+   if(!sampler)
+      return NULL;
+
+   sampler->base.destroy = lp_llvm_sampler_soa_destroy;
+   sampler->base.emit_fetch_texel = lp_llvm_sampler_soa_emit_fetch_texel;
+   sampler->dynamic_state.base.width = lp_llvm_texture_width;
+   sampler->dynamic_state.base.height = lp_llvm_texture_height;
+   sampler->dynamic_state.base.depth = lp_llvm_texture_depth;
+   sampler->dynamic_state.base.last_level = lp_llvm_texture_last_level;
+   sampler->dynamic_state.base.row_stride = lp_llvm_texture_row_stride;
+   sampler->dynamic_state.base.img_stride = lp_llvm_texture_img_stride;
+   sampler->dynamic_state.base.data_ptr = lp_llvm_texture_data_ptr;
+   sampler->dynamic_state.static_state = static_state;
+   sampler->dynamic_state.context_ptr = context_ptr;
+
+   return &sampler->base;
+}
+
diff --git a/src/gallium/drivers/llvmpipe/lp_tex_sample_llvm.c b/src/gallium/drivers/llvmpipe/lp_tex_sample_llvm.c
deleted file mode 100644 (file)
index 74b7393..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/**************************************************************************
- * 
- * Copyright 2009 VMware, Inc.
- * All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, 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.
- * 
- **************************************************************************/
-
-/**
- * Texture sampling code generation
- *
- * This file is nothing more than ugly glue between three largely independent
- * entities:
- * - TGSI -> LLVM translation (i.e., lp_build_tgsi_soa)
- * - texture sampling code generation (i.e., lp_build_sample_soa)
- * - LLVM pipe driver
- *
- * All interesting code is in the functions mentioned above. There is really
- * nothing to see here.
- *
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-#include "pipe/p_defines.h"
-#include "pipe/p_shader_tokens.h"
-#include "gallivm/lp_bld_debug.h"
-#include "gallivm/lp_bld_type.h"
-#include "gallivm/lp_bld_sample.h"
-#include "gallivm/lp_bld_tgsi.h"
-#include "lp_jit.h"
-#include "lp_tex_sample.h"
-
-
-/**
- * This provides the bridge between the sampler state store in
- * lp_jit_context and lp_jit_texture and the sampler code
- * generator. It provides the texture layout information required by
- * the texture sampler code generator in terms of the state stored in
- * lp_jit_context and lp_jit_texture in runtime.
- */
-struct llvmpipe_sampler_dynamic_state
-{
-   struct lp_sampler_dynamic_state base;
-
-   const struct lp_sampler_static_state *static_state;
-
-   LLVMValueRef context_ptr;
-};
-
-
-/**
- * This is the bridge between our sampler and the TGSI translator.
- */
-struct lp_llvm_sampler_soa
-{
-   struct lp_build_sampler_soa base;
-
-   struct llvmpipe_sampler_dynamic_state dynamic_state;
-};
-
-
-/**
- * Fetch the specified member of the lp_jit_texture structure.
- * \param emit_load  if TRUE, emit the LLVM load instruction to actually
- *                   fetch the field's value.  Otherwise, just emit the
- *                   GEP code to address the field.
- *
- * @sa http://llvm.org/docs/GetElementPtr.html
- */
-static LLVMValueRef
-lp_llvm_texture_member(struct lp_sampler_dynamic_state *base,
-                       LLVMBuilderRef builder,
-                       unsigned unit,
-                       unsigned member_index,
-                       const char *member_name,
-                       boolean emit_load)
-{
-   struct llvmpipe_sampler_dynamic_state *state =
-      (struct llvmpipe_sampler_dynamic_state *)base;
-   LLVMValueRef indices[4];
-   LLVMValueRef ptr;
-   LLVMValueRef res;
-
-   assert(unit < PIPE_MAX_SAMPLERS);
-
-   /* context[0] */
-   indices[0] = LLVMConstInt(LLVMInt32Type(), 0, 0);
-   /* context[0].textures */
-   indices[1] = LLVMConstInt(LLVMInt32Type(), LP_JIT_CTX_TEXTURES, 0);
-   /* context[0].textures[unit] */
-   indices[2] = LLVMConstInt(LLVMInt32Type(), unit, 0);
-   /* context[0].textures[unit].member */
-   indices[3] = LLVMConstInt(LLVMInt32Type(), member_index, 0);
-
-   ptr = LLVMBuildGEP(builder, state->context_ptr, indices, Elements(indices), "");
-
-   if (emit_load)
-      res = LLVMBuildLoad(builder, ptr, "");
-   else
-      res = ptr;
-
-   lp_build_name(res, "context.texture%u.%s", unit, member_name);
-
-   return res;
-}
-
-
-/**
- * Helper macro to instantiate the functions that generate the code to
- * fetch the members of lp_jit_texture to fulfill the sampler code
- * generator requests.
- *
- * This complexity is the price we have to pay to keep the texture
- * sampler code generator a reusable module without dependencies to
- * llvmpipe internals.
- */
-#define LP_LLVM_TEXTURE_MEMBER(_name, _index, _emit_load)  \
-   static LLVMValueRef \
-   lp_llvm_texture_##_name( struct lp_sampler_dynamic_state *base, \
-                            LLVMBuilderRef builder, \
-                            unsigned unit) \
-   { \
-      return lp_llvm_texture_member(base, builder, unit, _index, #_name, _emit_load ); \
-   }
-
-
-LP_LLVM_TEXTURE_MEMBER(width,      LP_JIT_TEXTURE_WIDTH, TRUE)
-LP_LLVM_TEXTURE_MEMBER(height,     LP_JIT_TEXTURE_HEIGHT, TRUE)
-LP_LLVM_TEXTURE_MEMBER(depth,      LP_JIT_TEXTURE_DEPTH, TRUE)
-LP_LLVM_TEXTURE_MEMBER(last_level, LP_JIT_TEXTURE_LAST_LEVEL, TRUE)
-LP_LLVM_TEXTURE_MEMBER(row_stride, LP_JIT_TEXTURE_ROW_STRIDE, FALSE)
-LP_LLVM_TEXTURE_MEMBER(img_stride, LP_JIT_TEXTURE_IMG_STRIDE, FALSE)
-LP_LLVM_TEXTURE_MEMBER(data_ptr,   LP_JIT_TEXTURE_DATA, FALSE)
-
-
-static void
-lp_llvm_sampler_soa_destroy(struct lp_build_sampler_soa *sampler)
-{
-   FREE(sampler);
-}
-
-
-/**
- * Fetch filtered values from texture.
- * The 'texel' parameter returns four vectors corresponding to R, G, B, A.
- */
-static void
-lp_llvm_sampler_soa_emit_fetch_texel(struct lp_build_sampler_soa *base,
-                                     LLVMBuilderRef builder,
-                                     struct lp_type type,
-                                     unsigned unit,
-                                     unsigned num_coords,
-                                     const LLVMValueRef *coords,
-                                     LLVMValueRef lodbias,
-                                     LLVMValueRef *texel)
-{
-   struct lp_llvm_sampler_soa *sampler = (struct lp_llvm_sampler_soa *)base;
-
-   assert(unit < PIPE_MAX_SAMPLERS);
-
-   lp_build_sample_soa(builder,
-                       &sampler->dynamic_state.static_state[unit],
-                       &sampler->dynamic_state.base,
-                       type,
-                       unit,
-                       num_coords,
-                       coords,
-                       lodbias,
-                       texel);
-}
-
-
-struct lp_build_sampler_soa *
-lp_llvm_sampler_soa_create(const struct lp_sampler_static_state *static_state,
-                           LLVMValueRef context_ptr)
-{
-   struct lp_llvm_sampler_soa *sampler;
-
-   sampler = CALLOC_STRUCT(lp_llvm_sampler_soa);
-   if(!sampler)
-      return NULL;
-
-   sampler->base.destroy = lp_llvm_sampler_soa_destroy;
-   sampler->base.emit_fetch_texel = lp_llvm_sampler_soa_emit_fetch_texel;
-   sampler->dynamic_state.base.width = lp_llvm_texture_width;
-   sampler->dynamic_state.base.height = lp_llvm_texture_height;
-   sampler->dynamic_state.base.depth = lp_llvm_texture_depth;
-   sampler->dynamic_state.base.last_level = lp_llvm_texture_last_level;
-   sampler->dynamic_state.base.row_stride = lp_llvm_texture_row_stride;
-   sampler->dynamic_state.base.img_stride = lp_llvm_texture_img_stride;
-   sampler->dynamic_state.base.data_ptr = lp_llvm_texture_data_ptr;
-   sampler->dynamic_state.static_state = static_state;
-   sampler->dynamic_state.context_ptr = context_ptr;
-
-   return &sampler->base;
-}
-
index cee170ec8343a35f980df48e368b821e244aa06b..2f41d620c8a675f97a010efa5e4e38a2776e66da 100644 (file)
@@ -47,7 +47,6 @@
 #include "lp_tile_image.h"
 #include "lp_texture.h"
 #include "lp_setup.h"
-#include "lp_tile_size.h"
 
 #include "state_tracker/sw_winsys.h"
 
 static INLINE boolean
 resource_is_texture(const struct pipe_resource *resource)
 {
-   const unsigned tex_binds = (PIPE_BIND_DISPLAY_TARGET |
-                               PIPE_BIND_SCANOUT |
-                               PIPE_BIND_SHARED |
-                               PIPE_BIND_DEPTH_STENCIL |
-                               PIPE_BIND_SAMPLER_VIEW);
-   const struct llvmpipe_resource *lpr = llvmpipe_resource_const(resource);
-
-   return (lpr->base.bind & tex_binds) ? TRUE : FALSE;
+   switch (resource->target) {
+   case PIPE_BUFFER:
+      return FALSE;
+   case PIPE_TEXTURE_1D:
+   case PIPE_TEXTURE_2D:
+   case PIPE_TEXTURE_3D:
+   case PIPE_TEXTURE_CUBE:
+      return TRUE;
+   default:
+      assert(0);
+      return FALSE;
+   }
 }
 
 
@@ -81,7 +84,7 @@ alloc_layout_array(unsigned num_slices, unsigned width, unsigned height)
    assert(LP_TEX_LAYOUT_NONE == 0); /* calloc'ing LP_TEX_LAYOUT_NONE here */
 
    return (enum lp_texture_layout *)
-      calloc(num_slices * tx * ty, sizeof(enum lp_texture_layout));
+      CALLOC(num_slices * tx * ty, sizeof(enum lp_texture_layout));
 }
 
 
@@ -189,20 +192,20 @@ llvmpipe_resource_create(struct pipe_screen *_screen,
 
    assert(lpr->base.bind);
 
-   if (lpr->base.bind & (PIPE_BIND_DISPLAY_TARGET |
-                         PIPE_BIND_SCANOUT |
-                         PIPE_BIND_SHARED)) {
-      /* displayable surface */
-      if (!llvmpipe_displaytarget_layout(screen, lpr))
-         goto fail;
-      assert(lpr->layout[0][0] == LP_TEX_LAYOUT_NONE);
-   }
-   else if (lpr->base.bind & (PIPE_BIND_SAMPLER_VIEW |
-                              PIPE_BIND_DEPTH_STENCIL)) {
-      /* texture map */
-      if (!llvmpipe_texture_layout(screen, lpr))
-         goto fail;
-      assert(lpr->layout[0][0] == LP_TEX_LAYOUT_NONE);
+   if (resource_is_texture(&lpr->base)) {
+      if (lpr->base.bind & PIPE_BIND_DISPLAY_TARGET) {
+         /* displayable surface */
+         if (!llvmpipe_displaytarget_layout(screen, lpr))
+            goto fail;
+         assert(lpr->layout[0][0] == LP_TEX_LAYOUT_NONE);
+      }
+      else {
+         /* texture map */
+         if (!llvmpipe_texture_layout(screen, lpr))
+            goto fail;
+         assert(lpr->layout[0][0] == LP_TEX_LAYOUT_NONE);
+      }
+      assert(lpr->layout[0]);
    }
    else {
       /* other data (vertex buffer, const buffer, etc) */
@@ -217,10 +220,6 @@ llvmpipe_resource_create(struct pipe_screen *_screen,
          goto fail;
    }
 
-   if (resource_is_texture(&lpr->base)) {
-      assert(lpr->layout[0]);
-   }
-
    lpr->id = id_counter++;
 
    return &lpr->base;
@@ -242,6 +241,13 @@ llvmpipe_resource_destroy(struct pipe_screen *pscreen,
       /* display target */
       struct sw_winsys *winsys = screen->winsys;
       winsys->displaytarget_destroy(winsys, lpr->dt);
+
+      if (lpr->tiled[0].data) {
+         align_free(lpr->tiled[0].data);
+         lpr->tiled[0].data = NULL;
+      }
+
+      FREE(lpr->layout[0]);
    }
    else if (resource_is_texture(pt)) {
       /* regular texture */
@@ -265,7 +271,7 @@ llvmpipe_resource_destroy(struct pipe_screen *pscreen,
 
       /* free layout flag arrays */
       for (level = 0; level < Elements(lpr->tiled); level++) {
-         free(lpr->layout[level]);
+         FREE(lpr->layout[level]);
          lpr->layout[level] = NULL;
       }
    }
@@ -389,10 +395,7 @@ llvmpipe_resource_data(struct pipe_resource *resource)
 {
    struct llvmpipe_resource *lpr = llvmpipe_resource(resource);
 
-   assert((lpr->base.bind & (PIPE_BIND_DISPLAY_TARGET |
-                             PIPE_BIND_SCANOUT |
-                             PIPE_BIND_SHARED |
-                             PIPE_BIND_SAMPLER_VIEW)) == 0);
+   assert(!resource_is_texture(resource));
 
    return lpr->data;
 }
@@ -496,6 +499,27 @@ llvmpipe_get_transfer(struct pipe_context *pipe,
    assert(resource);
    assert(sr.level <= resource->last_level);
 
+   /*
+    * Transfers, like other pipe operations, must happen in order, so flush the
+    * context if necessary.
+    */
+   if (!(usage & PIPE_TRANSFER_UNSYNCHRONIZED)) {
+      boolean read_only = !(usage & PIPE_TRANSFER_WRITE);
+      boolean do_not_block = !!(usage & PIPE_TRANSFER_DONTBLOCK);
+      if (!llvmpipe_flush_resource(pipe, resource,
+                                   sr.face, sr.level,
+                                   0, /* flush_flags */
+                                   read_only,
+                                   TRUE, /* cpu_access */
+                                   do_not_block)) {
+         /*
+          * It would have blocked, but state tracker requested no to.
+          */
+         assert(do_not_block);
+         return NULL;
+      }
+   }
+
    lpr = CALLOC_STRUCT(llvmpipe_transfer);
    if (lpr) {
       struct pipe_transfer *pt = &lpr->base;
@@ -566,19 +590,6 @@ llvmpipe_transfer_map( struct pipe_context *pipe,
    lpr = llvmpipe_resource(transfer->resource);
    format = lpr->base.format;
 
-   /*
-    * Transfers, like other pipe operations, must happen in order, so flush the
-    * context if necessary.
-    */
-   llvmpipe_flush_texture(pipe,
-                          transfer->resource,
-                         transfer->sr.face,
-                         transfer->sr.level,
-                          0, /* flush_flags */
-                          !(transfer->usage & PIPE_TRANSFER_WRITE), /* read_only */
-                          TRUE, /* cpu_access */
-                          FALSE); /* do_not_flush */
-
    map = llvmpipe_resource_map(transfer->resource,
                               transfer->sr.face,
                               transfer->sr.level,
@@ -994,14 +1005,16 @@ llvmpipe_get_texture_image(struct llvmpipe_resource *lpr,
                                      x * TILE_SIZE, y * TILE_SIZE,
                                      TILE_SIZE, TILE_SIZE,
                                      lpr->base.format,
-                                     lpr->row_stride[level]);
+                                     lpr->row_stride[level],
+                                     lpr->tiles_per_row[level]);
                }
                else {
                   lp_tiled_to_linear(other_data, target_data,
                                      x * TILE_SIZE, y * TILE_SIZE,
                                      TILE_SIZE, TILE_SIZE,
                                      lpr->base.format,
-                                     lpr->row_stride[level]);
+                                     lpr->row_stride[level],
+                                     lpr->tiles_per_row[level]);
                }
             }
 
@@ -1090,7 +1103,8 @@ llvmpipe_get_texture_tile_linear(struct llvmpipe_resource *lpr,
    if (convert) {
       lp_tiled_to_linear(tiled_image, linear_image,
                          x, y, TILE_SIZE, TILE_SIZE, lpr->base.format,
-                         lpr->row_stride[level]);
+                         lpr->row_stride[level],
+                         lpr->tiles_per_row[level]);
    }
 
    if (new_layout != cur_layout)
@@ -1138,7 +1152,8 @@ llvmpipe_get_texture_tile(struct llvmpipe_resource *lpr,
    if (convert) {
       lp_linear_to_tiled(linear_image, tiled_image,
                          x, y, TILE_SIZE, TILE_SIZE, lpr->base.format,
-                         lpr->row_stride[level]);
+                         lpr->row_stride[level],
+                         lpr->tiles_per_row[level]);
    }
 
    if (new_layout != cur_layout)
@@ -1152,6 +1167,27 @@ llvmpipe_get_texture_tile(struct llvmpipe_resource *lpr,
 }
 
 
+/**
+ * Return size of resource in bytes
+ */
+unsigned
+llvmpipe_resource_size(const struct pipe_resource *resource)
+{
+   const struct llvmpipe_resource *lpr = llvmpipe_resource_const(resource);
+   unsigned lvl, size = 0;
+
+   for (lvl = 0; lvl <= lpr->base.last_level; lvl++) {
+      if (lpr->linear[lvl].data)
+         size += tex_image_size(lpr, lvl, LP_TEX_LAYOUT_LINEAR);
+
+      if (lpr->tiled[lvl].data)
+         size += tex_image_size(lpr, lvl, LP_TEX_LAYOUT_TILED);
+   }
+
+   return size;
+}
+
+
 void
 llvmpipe_init_screen_resource_funcs(struct pipe_screen *screen)
 {
index 858975bcee03ee60aed0959f4053a76199d96461..a8d08d6247f0011aa587bde030d3cc8eeeec0f27 100644 (file)
 
 #include "pipe/p_state.h"
 #include "util/u_debug.h"
-
-
-#define LP_MAX_TEXTURE_2D_LEVELS 12  /* 2K x 2K for now */
-#define LP_MAX_TEXTURE_3D_LEVELS 10  /* 512 x 512 x 512 for now */
-
-#define LP_MAX_TEXTURE_LEVELS LP_MAX_TEXTURE_2D_LEVELS
+#include "lp_limits.h"
 
 
 enum lp_texture_usage
@@ -189,6 +184,10 @@ void *
 llvmpipe_resource_data(struct pipe_resource *resource);
 
 
+unsigned
+llvmpipe_resource_size(const struct pipe_resource *resource);
+
+
 ubyte *
 llvmpipe_get_texture_image_address(struct llvmpipe_resource *lpr,
                                     unsigned face_slice, unsigned level,
index 0852150ba7216010573252dc86a219cd9d17fe52..2b63992dd7008271f4bb5916c98f01a6a679fca7 100644 (file)
@@ -122,14 +122,15 @@ tile_4_4_uint16(const uint16_t *src, uint16_t *dst, unsigned src_stride)
 
 /**
  * Convert a tiled image into a linear image.
- * \param src_stride  source row stride in bytes (bytes per row of tiles)
  * \param dst_stride  dest row stride in bytes
  */
 void
 lp_tiled_to_linear(const void *src, void *dst,
                    unsigned x, unsigned y,
                    unsigned width, unsigned height,
-                   enum pipe_format format, unsigned dst_stride)
+                   enum pipe_format format,
+                   unsigned dst_stride,
+                   unsigned tiles_per_row)
 {
    assert(x % TILE_SIZE == 0);
    assert(y % TILE_SIZE == 0);
@@ -191,8 +192,6 @@ lp_tiled_to_linear(const void *src, void *dst,
       const uint bpp = 4;
       const uint tile_w = TILE_SIZE, tile_h = TILE_SIZE;
       const uint bytes_per_tile = tile_w * tile_h * bpp;
-      const uint src_stride = dst_stride * tile_w;
-      const uint tiles_per_row = src_stride / bytes_per_tile;
       uint i, j;
 
       for (j = 0; j < height; j += tile_h) {
@@ -202,7 +201,7 @@ lp_tiled_to_linear(const void *src, void *dst,
             uint byte_offset = tile_offset * bytes_per_tile;
             const uint8_t *src_tile = (uint8_t *) src + byte_offset;
 
-            lp_tile_write_4ub(format,
+            lp_tile_unswizzle_4ub(format,
                               src_tile,
                               dst, dst_stride,
                               ii, jj, tile_w, tile_h);
@@ -215,13 +214,14 @@ lp_tiled_to_linear(const void *src, void *dst,
 /**
  * Convert a linear image into a tiled image.
  * \param src_stride  source row stride in bytes
- * \param dst_stride  dest row stride in bytes (bytes per row of tiles)
  */
 void
 lp_linear_to_tiled(const void *src, void *dst,
                    unsigned x, unsigned y,
                    unsigned width, unsigned height,
-                   enum pipe_format format, unsigned src_stride)
+                   enum pipe_format format,
+                   unsigned src_stride,
+                   unsigned tiles_per_row)
 {
    assert(x % TILE_SIZE == 0);
    assert(y % TILE_SIZE == 0);
@@ -281,8 +281,6 @@ lp_linear_to_tiled(const void *src, void *dst,
       const uint bpp = 4;
       const uint tile_w = TILE_SIZE, tile_h = TILE_SIZE;
       const uint bytes_per_tile = tile_w * tile_h * bpp;
-      const uint dst_stride = src_stride * tile_w;
-      const uint tiles_per_row = dst_stride / bytes_per_tile;
       uint i, j;
 
       for (j = 0; j < height; j += TILE_SIZE) {
@@ -292,7 +290,7 @@ lp_linear_to_tiled(const void *src, void *dst,
             uint byte_offset = tile_offset * bytes_per_tile;
             uint8_t *dst_tile = (uint8_t *) dst + byte_offset;
 
-            lp_tile_read_4ub(format,
+            lp_tile_swizzle_4ub(format,
                              dst_tile,
                              src, src_stride,
                              ii, jj, tile_w, tile_h);
@@ -320,10 +318,10 @@ test_tiled_linear_conversion(void *data,
    /*unsigned tiled_stride = wt * TILE_SIZE * TILE_SIZE * 4;*/
 
    lp_linear_to_tiled(data, tiled, 0, 0, width, height, format,
-                      stride);
+                      stride, wt);
 
    lp_tiled_to_linear(tiled, data, 0, 0, width, height, format,
-                      stride);
+                      stride, wt);
 
    free(tiled);
 }
index d74621925d5f56de9cd12ca313123a7fb1a98ca2..8de8efc6c16f4c8feec27269c1fefcc9dfcbd865 100644 (file)
@@ -33,14 +33,18 @@ void
 lp_tiled_to_linear(const void *src, void *dst,
                    unsigned x, unsigned y,
                    unsigned width, unsigned height,
-                   enum pipe_format format, unsigned dst_stride);
+                   enum pipe_format format,
+                   unsigned dst_stride,
+                   unsigned tiles_per_row);
 
 
 void
 lp_linear_to_tiled(const void *src, void *dst,
                    unsigned x, unsigned y,
                    unsigned width, unsigned height,
-                   enum pipe_format format, unsigned src_stride);
+                   enum pipe_format format,
+                   unsigned src_stride,
+                   unsigned tiles_per_row);
 
 
 void
diff --git a/src/gallium/drivers/llvmpipe/lp_tile_size.h b/src/gallium/drivers/llvmpipe/lp_tile_size.h
deleted file mode 100644 (file)
index f0b983c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/**************************************************************************
- * 
- * 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 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 THE 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.
- * 
- **************************************************************************/
-
-#ifndef LP_TILE_SIZE_H
-#define LP_TILE_SIZE_H
-
-
-/**
- * Tile size (width and height). This needs to be a power of two.
- */
-#define TILE_ORDER 6
-#define TILE_SIZE (1 << TILE_ORDER)
-
-
-#endif
index 9d6a88afec591b6976757ec9c2ef3f0a6bd03eee..07f71b8411abcba596458637900a8d44322ca9ec 100644 (file)
@@ -30,7 +30,7 @@
 
 #include "pipe/p_compiler.h"
 #include "tgsi/tgsi_exec.h" /* for NUM_CHANNELS */
-#include "lp_tile_size.h"
+#include "lp_limits.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -51,7 +51,10 @@ tile_offset[TILE_VECTOR_HEIGHT][TILE_VECTOR_WIDTH];
 #define TILE_Y_STRIDE (TILE_VECTOR_HEIGHT * TILE_SIZE * NUM_CHANNELS) //1024
 
 
-extern int tile_write_count, tile_read_count;
+#ifdef DEBUG
+extern unsigned lp_tile_unswizzle_count;
+extern unsigned lp_tile_swizzle_count;
+#endif
 
 
 /**
@@ -73,14 +76,14 @@ tile_pixel_offset(unsigned x, unsigned y, unsigned c)
 
 
 void
-lp_tile_read_4ub(enum pipe_format format,
+lp_tile_swizzle_4ub(enum pipe_format format,
                  uint8_t *dst,
                  const void *src, unsigned src_stride,
                  unsigned x, unsigned y, unsigned w, unsigned h);
 
 
 void
-lp_tile_write_4ub(enum pipe_format format,
+lp_tile_unswizzle_4ub(enum pipe_format format,
                   const uint8_t *src,
                   void *dst, unsigned dst_stride,
                   unsigned x, unsigned y, unsigned w, unsigned h);
index 65810b6f8ff2b65570d5472cd5461e5fa1422a88..5ab63cbac67fdc190150292e42e9967f14f349e8 100644 (file)
@@ -58,7 +58,7 @@ def is_format_supported(format):
         channel = format.channels[i]
         if channel.type not in (VOID, UNSIGNED, SIGNED, FLOAT):
             return False
-        if channel.type == FLOAT and channel.size not in (32 ,64):
+        if channel.type == FLOAT and channel.size not in (16, 32 ,64):
             return False
 
     if format.colorspace not in ('rgb', 'srgb'):
@@ -75,7 +75,7 @@ def generate_format_read(format, dst_channel, dst_native_type, dst_suffix):
     src_native_type = native_type(format)
 
     print 'static void'
-    print 'lp_tile_%s_read_%s(%s *dst, const uint8_t *src, unsigned src_stride, unsigned x0, unsigned y0, unsigned w, unsigned h)' % (name, dst_suffix, dst_native_type)
+    print 'lp_tile_%s_swizzle_%s(%s *dst, const uint8_t *src, unsigned src_stride, unsigned x0, unsigned y0, unsigned w, unsigned h)' % (name, dst_suffix, dst_native_type)
     print '{'
     print '   unsigned x, y;'
     print '   const uint8_t *src_row = src + y0*src_stride;'
@@ -193,7 +193,7 @@ def pack_rgba(format, src_channel, r, g, b, a):
     return expr
 
 
-def emit_unrolled_write_code(format, src_channel):
+def emit_unrolled_unswizzle_code(format, src_channel):
     '''Emit code for writing a block based on unrolled loops.
     This is considerably faster than the TILE_PIXEL-based code below.
     '''
@@ -223,7 +223,7 @@ def emit_unrolled_write_code(format, src_channel):
     print '   }'
 
 
-def emit_tile_pixel_write_code(format, src_channel):
+def emit_tile_pixel_unswizzle_code(format, src_channel):
     '''Emit code for writing a block based on the TILE_PIXEL macro.'''
     dst_native_type = native_type(format)
 
@@ -257,7 +257,7 @@ def emit_tile_pixel_write_code(format, src_channel):
                     value = 'TILE_PIXEL(src, x, y, %u)' % inv_swizzle[i]
                     value = conversion_expr(src_channel, dst_channel, dst_native_type, value, clamp=False)
                     print '         *dst_pixel++ = %s;' % value
-                else:
+                elif dst_channel.size:
                     print '         ++dst_pixel;'
     else:
         assert False
@@ -273,7 +273,7 @@ def generate_format_write(format, src_channel, src_native_type, src_suffix):
     name = format.short_name()
 
     print 'static void'
-    print 'lp_tile_%s_write_%s(const %s *src, uint8_t *dst, unsigned dst_stride, unsigned x0, unsigned y0, unsigned w, unsigned h)' % (name, src_suffix, src_native_type)
+    print 'lp_tile_%s_unswizzle_%s(const %s *src, uint8_t *dst, unsigned dst_stride, unsigned x0, unsigned y0, unsigned w, unsigned h)' % (name, src_suffix, src_native_type)
     print '{'
     if format.layout == PLAIN \
         and format.colorspace == 'rgb' \
@@ -282,14 +282,14 @@ def generate_format_write(format, src_channel, src_native_type, src_suffix):
         and not format.is_mixed() \
         and (format.channels[0].type == UNSIGNED \
              or format.channels[1].type == UNSIGNED):
-        emit_unrolled_write_code(format, src_channel)
+        emit_unrolled_unswizzle_code(format, src_channel)
     else:
-        emit_tile_pixel_write_code(format, src_channel)
+        emit_tile_pixel_unswizzle_code(format, src_channel)
     print '}'
     print
     
 
-def generate_read(formats, dst_channel, dst_native_type, dst_suffix):
+def generate_swizzle(formats, dst_channel, dst_native_type, dst_suffix):
     '''Generate the dispatch function to read pixels from any format'''
 
     for format in formats:
@@ -297,15 +297,17 @@ def generate_read(formats, dst_channel, dst_native_type, dst_suffix):
             generate_format_read(format, dst_channel, dst_native_type, dst_suffix)
 
     print 'void'
-    print 'lp_tile_read_%s(enum pipe_format format, %s *dst, const void *src, unsigned src_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (dst_suffix, dst_native_type)
+    print 'lp_tile_swizzle_%s(enum pipe_format format, %s *dst, const void *src, unsigned src_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (dst_suffix, dst_native_type)
     print '{'
     print '   void (*func)(%s *dst, const uint8_t *src, unsigned src_stride, unsigned x0, unsigned y0, unsigned w, unsigned h);' % dst_native_type
-    print '   tile_read_count += 1;'
+    print '#ifdef DEBUG'
+    print '   lp_tile_swizzle_count += 1;'
+    print '#endif'
     print '   switch(format) {'
     for format in formats:
         if is_format_supported(format):
             print '   case %s:' % format.name
-            print '      func = &lp_tile_%s_read_%s;' % (format.short_name(), dst_suffix)
+            print '      func = &lp_tile_%s_swizzle_%s;' % (format.short_name(), dst_suffix)
             print '      break;'
     print '   default:'
     print '      debug_printf("%s: unsupported format %s\\n", __FUNCTION__, util_format_name(format));'
@@ -316,7 +318,7 @@ def generate_read(formats, dst_channel, dst_native_type, dst_suffix):
     print
 
 
-def generate_write(formats, src_channel, src_native_type, src_suffix):
+def generate_unswizzle(formats, src_channel, src_native_type, src_suffix):
     '''Generate the dispatch function to write pixels to any format'''
 
     for format in formats:
@@ -324,16 +326,18 @@ def generate_write(formats, src_channel, src_native_type, src_suffix):
             generate_format_write(format, src_channel, src_native_type, src_suffix)
 
     print 'void'
-    print 'lp_tile_write_%s(enum pipe_format format, const %s *src, void *dst, unsigned dst_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (src_suffix, src_native_type)
+    print 'lp_tile_unswizzle_%s(enum pipe_format format, const %s *src, void *dst, unsigned dst_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (src_suffix, src_native_type)
     
     print '{'
     print '   void (*func)(const %s *src, uint8_t *dst, unsigned dst_stride, unsigned x0, unsigned y0, unsigned w, unsigned h);' % src_native_type
-    print '   tile_write_count += 1;'
+    print '#ifdef DEBUG'
+    print '   lp_tile_unswizzle_count += 1;'
+    print '#endif'
     print '   switch(format) {'
     for format in formats:
         if is_format_supported(format):
             print '   case %s:' % format.name
-            print '      func = &lp_tile_%s_write_%s;' % (format.short_name(), src_suffix)
+            print '      func = &lp_tile_%s_unswizzle_%s;' % (format.short_name(), src_suffix)
             print '      break;'
     print '   default:'
     print '      debug_printf("%s: unsupported format %s\\n", __FUNCTION__, util_format_name(format));'
@@ -360,7 +364,10 @@ def main():
     print '#include "util/u_half.h"'
     print '#include "lp_tile_soa.h"'
     print
-    print 'int tile_write_count=0, tile_read_count=0;'
+    print '#ifdef DEBUG'
+    print 'unsigned lp_tile_unswizzle_count = 0;'
+    print 'unsigned lp_tile_swizzle_count = 0;'
+    print '#endif'
     print
     print 'const unsigned char'
     print 'tile_offset[TILE_VECTOR_HEIGHT][TILE_VECTOR_WIDTH] = {'
@@ -388,8 +395,8 @@ def main():
     native_type = 'uint8_t'
     suffix = '4ub'
 
-    generate_read(formats, channel, native_type, suffix)
-    generate_write(formats, channel, native_type, suffix)
+    generate_swizzle(formats, channel, native_type, suffix)
+    generate_unswizzle(formats, channel, native_type, suffix)
 
 
 if __name__ == '__main__':
diff --git a/src/gallium/drivers/llvmpipe/sp2lp.sh b/src/gallium/drivers/llvmpipe/sp2lp.sh
deleted file mode 100755 (executable)
index c45a81c..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-#
-# Port changes from softpipe to llvmpipe. Invoke as
-#
-#   sp2lp.sh <commit>
-#
-# Note that this will only affect llvmpipe -- you still need to actually
-# cherry-pick/merge the softpipe changes themselves if they affect directories
-# outside src/gallium/drivers/softpipe
-
-git format-patch \
-       --keep-subject \
-       --relative=src/gallium/drivers/softpipe \
-       --src-prefix=a/src/gallium/drivers/llvmpipe/ \
-       --dst-prefix=b/src/gallium/drivers/llvmpipe/ \
-       --stdout "$1^1..$1" \
-| sed \
-       -e 's/\<softpipe\>/llvmpipe/g' \
-       -e 's/\<sp\>/lp/g' \
-       -e 's/\<softpipe_/llvmpipe_/g' \
-       -e 's/\<sp_/lp_/g' \
-       -e 's/\<SP_/LP_/g' \
-       -e 's/\<SOFTPIPE_/LLVMPIPE_/g' \
-       -e 's/\<spt\>/lpt/g' \
-       -e 's/\<sps\>/lps/g' \
-       -e 's/\<spfs\>/lpfs/g' \
-       -e 's/\<sptex\>/lptex/g' \
-       -e 's/\<setup_\(point\|line\|tri\)\>/llvmpipe_\0/g' \
-       -e 's/\<llvmpipe_cached_tile\>/llvmpipe_cached_tex_tile/g' \
-       -e 's/_get_cached_tile_tex\>/_get_cached_tex_tile/g' \
-       -e 's/\<TILE_SIZE\>/TEX_TILE_SIZE/g' \
-       -e 's/\<tile_address\>/tex_tile_address/g' \
-       -e 's/\<tile->data\.color\>/tile->color/g' \
-| patch -p1
diff --git a/src/gallium/drivers/nouveau/SConscript b/src/gallium/drivers/nouveau/SConscript
new file mode 100644 (file)
index 0000000..fe7af4d
--- /dev/null
@@ -0,0 +1,11 @@
+Import('*')
+
+env = env.Clone()
+
+nouveau = env.ConvenienceLibrary(
+    target = 'nouveau',
+    source = [
+        'nouveau_screen.c',
+    ])
+
+Export('nouveau')
diff --git a/src/gallium/drivers/nv50/SConscript b/src/gallium/drivers/nv50/SConscript
new file mode 100644 (file)
index 0000000..8625f92
--- /dev/null
@@ -0,0 +1,26 @@
+Import('*')
+
+env = env.Clone()
+
+nv50 = env.ConvenienceLibrary(
+    target = 'nv50',
+    source = [
+        'nv50_buffer.c',
+        'nv50_clear.c',
+        'nv50_context.c',
+        'nv50_draw.c',
+        'nv50_miptree.c',
+        'nv50_query.c',
+        'nv50_program.c',
+        'nv50_resource.c',
+        'nv50_screen.c',
+        'nv50_state.c',
+        'nv50_state_validate.c',
+        'nv50_surface.c',
+        'nv50_tex.c',
+        'nv50_transfer.c',
+        'nv50_vbo.c',
+        'nv50_push.c',
+    ])
+
+Export('nv50')
index b8b6b12120ba23c23ab8ca7bdacbfe773473133a..0156ff95ff943f75a45e443147d9ff3a4f3ebdf5 100644 (file)
@@ -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;
index ad17991be9a05ab38e8350432cef8c865ade0d90..2dd10424245ce0564a0548dd68f2b14d4643e9b2 100644 (file)
@@ -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;
        }
index 40ebbee72e2e48e795e0de3e983a7d92dd1a7c2c..fbf15a75967068dd24f2a7cd0419936bad218b28 100644 (file)
@@ -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];
 
index c2d9e83526053671ddc39ecc01f3573ede0bf9a6..d905d95354f96d20381c8b5e13645c936a7d7caf 100644 (file)
 #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/nvfx/SConscript b/src/gallium/drivers/nvfx/SConscript
new file mode 100644 (file)
index 0000000..02d931b
--- /dev/null
@@ -0,0 +1,40 @@
+Import('*')
+
+env = env.Clone()
+
+env.PrependUnique(delete_existing=1, CPPPATH = [
+    '#/src/gallium/drivers',
+])
+
+nvfx = env.ConvenienceLibrary(
+    target = 'nvfx',
+    source = [
+        'nv04_surface_2d.c',
+        'nvfx_buffer.c',
+        'nvfx_context.c',
+        'nvfx_clear.c',
+        'nvfx_draw.c',
+        'nvfx_fragprog.c',
+        'nvfx_fragtex.c',
+        'nv30_fragtex.c',
+        'nv40_fragtex.c',
+        'nvfx_miptree.c',
+        'nvfx_query.c',
+        'nvfx_resource.c',
+        'nvfx_screen.c',
+        'nvfx_state.c',
+        'nvfx_state_blend.c',
+        'nvfx_state_emit.c',
+        'nvfx_state_fb.c',
+        'nvfx_state_rasterizer.c',
+        'nvfx_state_scissor.c',
+        'nvfx_state_stipple.c',
+        'nvfx_state_viewport.c',
+        'nvfx_state_zsa.c',
+        'nvfx_surface.c',
+        'nvfx_transfer.c',
+        'nvfx_vbo.c',
+        'nvfx_vertprog.c',
+    ])
+
+Export('nvfx')
index 4d7b7f181d87445320f45c0365965a44f55e706e..520bae5aed2b82fd3a89598a71884219531407c1 100644 (file)
@@ -8,6 +8,7 @@
 #include "nvfx_resource.h"
 
 #include "nouveau/nouveau_channel.h"
+#include "nouveau/nouveau_class.h"
 #include "nouveau/nouveau_pushbuf.h"
 #include "nouveau/nouveau_util.h"
 
index 5a8e00f15a2c477387d9fb29dae8277f0a7568f1..d3cd6bef96e6935db36a8a0eff0d3ff5ffd2e082 100644 (file)
@@ -11,6 +11,7 @@ C_SOURCES = \
        r300_emit.c \
        r300_flush.c \
        r300_fs.c \
+       r300_hyperz.c \
        r300_query.c \
        r300_render.c \
        r300_resource.c \
index 08aec427a156b80b58c0a90d102f4e1cfd778cf2..3921085d76a22e60fe9403be513cf30c6fb2ef26 100644 (file)
@@ -21,6 +21,7 @@ r300 = env.ConvenienceLibrary(
         'r300_emit.c',
         'r300_flush.c',
         'r300_fs.c',
+        'r300_hyperz.c',
         'r300_query.c',
         'r300_render.c',
         'r300_resource.c',
index deaa03e1f616e44c346358f543900ca15e7abf2e..e84bce0010f453b88d6d3f205b778a87844b2140 100644 (file)
 #include "r300_state_invariant.h"
 #include "r300_winsys.h"
 
+#include <inttypes.h>
+
 static void r300_destroy_context(struct pipe_context* context)
 {
     struct r300_context* r300 = r300_context(context);
     struct r300_query* query, * temp;
+    struct r300_atom *atom;
 
     util_blitter_destroy(r300->blitter);
     draw_destroy(r300->draw);
 
+    /* Print stats, if enabled. */
+    if (SCREEN_DBG_ON(r300->screen, DBG_STATS)) {
+        fprintf(stderr, "r300: Stats for context %p:\n", r300);
+        fprintf(stderr, "    : Flushes: %" PRIu64 "\n", r300->flush_counter);
+        foreach(atom, &r300->atom_list) {
+            fprintf(stderr, "    : %s: %" PRIu64 " emits\n",
+                atom->name, atom->counter);
+        }
+    }
+
     /* Free the OQ BO. */
     context->screen->resource_destroy(context->screen, r300->oqbo);
 
@@ -63,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);
@@ -112,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);
@@ -136,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);
index 1e4fd9e5edd7d73b8e20cd279e47dfde43a927d3..e9c8fcdc157baffdc5d6a72e86293498fc64259f 100644 (file)
@@ -45,6 +45,8 @@ struct r300_atom {
     struct r300_atom *prev, *next;
     /* Name, for debugging. */
     const char* name;
+    /* Stat counter. */
+    uint64_t counter;
     /* Opaque state. */
     void* state;
     /* Emit the state to the context. */
@@ -117,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 */
@@ -188,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 */
@@ -255,6 +255,10 @@ struct r300_texture {
     /* A pitch for each mip-level */
     unsigned pitch[R300_MAX_TEXTURE_LEVELS];
 
+    /* A pitch multiplied by blockwidth as hardware wants
+     * the number of pixels instead of the number of blocks. */
+    unsigned hwpitch[R300_MAX_TEXTURE_LEVELS];
+
     /* Size of one zslice or face based on the texture target */
     unsigned layer_size[R300_MAX_TEXTURE_LEVELS];
 
@@ -375,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;
@@ -383,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. */
@@ -418,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. */
@@ -435,6 +440,9 @@ struct r300_context {
     /* upload managers */
     struct u_upload_mgr *upload_vb;
     struct u_upload_mgr *upload_ib;
+
+    /* Stat counter. */
+    uint64_t flush_counter;
 };
 
 /* Convenience cast wrapper. */
index 456b2ec7b922a52e6f2f458ea95dd4e043cffa7f..996a4f491e7c5c6ecdb493a05c4cf66c056a01a3 100644 (file)
     cs_count--; \
 } while (0)
 
+#define OUT_CS_TABLE(values, count) do { \
+    if (VERY_VERBOSE_REGISTERS) \
+        DBG(cs_context_copy, DBG_CS, "r300: writing table of %d dwords\n", count); \
+    cs_winsys->write_cs_table(cs_winsys, values, count); \
+    cs_count -= count; \
+} while (0)
+
 #define OUT_CS_BUF_RELOC(bo, offset, rd, wd, flags) do { \
     DBG(cs_context_copy, DBG_CS, "r300: writing relocation for buffer %p, offset %d, " \
             "domains (%d, %d, %d)\n", \
         DBG(cs_context_copy, DBG_CS, "r300: FLUSH_CS in %s (%s:%d)\n\n", __FUNCTION__, \
                 __FILE__, __LINE__); \
     } \
+    if (SCREEN_DBG_ON(r300->screen, DBG_STATS)) { \
+        r300->flush_counter++; \
+    } \
     cs_winsys->flush_cs(cs_winsys); \
 } while (0)
 
index 6e84bf82469eb93beccad0af960a53b99ff8aa37..4c2836f36a8a39510be14fb4b917fbf23640b704 100644 (file)
@@ -38,9 +38,11 @@ static struct debug_option debug_options[] = {
     { "draw", DBG_DRAW, "Draw and emit (for debugging)" },
     { "tex", DBG_TEX, "Textures (for debugging)" },
     { "fall", DBG_FALL, "Fallbacks (for debugging)" },
+    { "rs", DBG_RS, "Rasterizer (for debugging)" },
     { "anisohq", DBG_ANISOHQ, "High quality anisotropic filtering (for benchmarking)" },
     { "notiling", DBG_NO_TILING, "Disable tiling (for benchmarking)" },
     { "noimmd", DBG_NO_IMMD, "Disable immediate mode (for benchmarking)" },
+    { "stats", DBG_STATS, "Gather statistics (for lulz)" },
 
     { "all", ~0, "Convenience option that enables all debug flags" },
 
index 19acdaba621bbc834fdc4c0d3d79cf0af14032ec..23bbc6a99c86151f23abe6f4fb9d09bea6b76787 100644 (file)
@@ -83,7 +83,6 @@ void r300_emit_clip_state(struct r300_context* r300,
                           unsigned size, void* state)
 {
     struct pipe_clip_state* clip = (struct pipe_clip_state*)state;
-    int i;
     CS_LOCALS(r300);
 
     if (r300->screen->caps.has_tcl) {
@@ -92,12 +91,7 @@ void r300_emit_clip_state(struct r300_context* r300,
                 (r300->screen->caps.is_r500 ?
                  R500_PVS_UCP_START : R300_PVS_UCP_START));
         OUT_CS_ONE_REG(R300_VAP_PVS_UPLOAD_DATA, 6 * 4);
-        for (i = 0; i < 6; i++) {
-            OUT_CS_32F(clip->ucp[i][0]);
-            OUT_CS_32F(clip->ucp[i][1]);
-            OUT_CS_32F(clip->ucp[i][2]);
-            OUT_CS_32F(clip->ucp[i][3]);
-        }
+        OUT_CS_TABLE(clip->ucp, 6 * 4);
         OUT_CS_REG(R300_VAP_CLIP_CNTL, ((1 << clip->nr) - 1) |
                 R300_PS_UCP_MODE_CLIP_AS_TRIFAN);
         END_CS;
@@ -106,7 +100,6 @@ void r300_emit_clip_state(struct r300_context* r300,
         OUT_CS_REG(R300_VAP_CLIP_CNTL, R300_CLIP_DISABLE);
         END_CS;
     }
-
 }
 
 void r300_emit_dsa_state(struct r300_context* r300, unsigned size, void* state)
@@ -244,8 +237,7 @@ void r300_emit_fs(struct r300_context* r300, unsigned size, void *state)
     OUT_CS_REG(R300_US_CODE_OFFSET, code->code_offset);
 
     OUT_CS_REG_SEQ(R300_US_CODE_ADDR_0, 4);
-    for(i = 0; i < 4; ++i)
-        OUT_CS(code->code_addr[i]);
+    OUT_CS_TABLE(code->code_addr, 4);
 
     OUT_CS_REG_SEQ(R300_US_ALU_RGB_INST_0, code->alu.length);
     for (i = 0; i < code->alu.length; i++)
@@ -265,8 +257,7 @@ void r300_emit_fs(struct r300_context* r300, unsigned size, void *state)
 
     if (code->tex.length) {
         OUT_CS_REG_SEQ(R300_US_TEX_INST_0, code->tex.length);
-        for(i = 0; i < code->tex.length; ++i)
-            OUT_CS(code->tex.inst[i]);
+        OUT_CS_TABLE(code->tex.inst, code->tex.length);
     }
 
     /* Emit immediates. */
@@ -396,10 +387,7 @@ void r500_emit_fs(struct r300_context* r300, unsigned size, void *state)
                            R500_GA_US_VECTOR_INDEX_TYPE_CONST |
                            (i & R500_GA_US_VECTOR_INDEX_MASK));
                 OUT_CS_ONE_REG(R500_GA_US_VECTOR_DATA, 4);
-                OUT_CS_32F(data[0]);
-                OUT_CS_32F(data[1]);
-                OUT_CS_32F(data[2]);
-                OUT_CS_32F(data[3]);
+                OUT_CS_TABLE(data, 4);
             }
         }
     }
@@ -424,15 +412,9 @@ void r500_emit_fs_constants(struct r300_context* r300, unsigned size, void *stat
     OUT_CS_REG(R500_GA_US_VECTOR_INDEX, R500_GA_US_VECTOR_INDEX_TYPE_CONST);
     OUT_CS_ONE_REG(R500_GA_US_VECTOR_DATA, count * 4);
     for(i = 0; i < count; ++i) {
-        const float *data;
         assert(constants->Constants[i].Type == RC_CONSTANT_EXTERNAL);
-        data = buf->constants[i];
-
-        OUT_CS_32F(data[0]);
-        OUT_CS_32F(data[1]);
-        OUT_CS_32F(data[2]);
-        OUT_CS_32F(data[3]);
     }
+    OUT_CS_TABLE(buf->constants, count * 4);
     END_CS;
 }
 
@@ -459,10 +441,7 @@ void r500_emit_fs_rc_constant_state(struct r300_context* r300, unsigned size, vo
                        R500_GA_US_VECTOR_INDEX_TYPE_CONST |
                        (i & R500_GA_US_VECTOR_INDEX_MASK));
             OUT_CS_ONE_REG(R500_GA_US_VECTOR_DATA, 4);
-            OUT_CS_32F(data[0]);
-            OUT_CS_32F(data[1]);
-            OUT_CS_32F(data[2]);
-            OUT_CS_32F(data[3]);
+            OUT_CS_TABLE(data, 4);
         }
     }
     END_CS;
@@ -738,13 +717,20 @@ 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 {
         OUT_CS_REG_SEQ(R300_RS_IP_0, count);
     }
+    OUT_CS_TABLE(rs->ip, count);
     for (i = 0; i < count; i++) {
-        OUT_CS(rs->ip[i]);
         DBG(r300, DBG_DRAW, "    : ip %d: 0x%08x\n", i, rs->ip[i]);
     }
 
@@ -757,8 +743,8 @@ void r300_emit_rs_block_state(struct r300_context* r300,
     } else {
         OUT_CS_REG_SEQ(R300_RS_INST_0, count);
     }
+    OUT_CS_TABLE(rs->inst, count);
     for (i = 0; i < count; i++) {
-        OUT_CS(rs->inst[i]);
         DBG(r300, DBG_DRAW, "    : inst %d: 0x%08x\n", i, rs->inst[i]);
     }
 
@@ -823,7 +809,7 @@ void r300_emit_textures_state(struct r300_context *r300,
     END_CS;
 }
 
-void r300_emit_aos(struct r300_context* r300, unsigned offset)
+void r300_emit_aos(struct r300_context* r300, unsigned offset, boolean indexed)
 {
     struct pipe_vertex_buffer *vb1, *vb2, *vbuf = r300->vertex_buffer;
     struct pipe_vertex_element *velem = r300->velems->velem;
@@ -832,9 +818,18 @@ void r300_emit_aos(struct r300_context* r300, unsigned offset)
     unsigned packet_size = (aos_count * 3 + 1) / 2;
     CS_LOCALS(r300);
 
+    for (i = 0; i < aos_count; i++) {
+        if ((vbuf[velem[i].vertex_buffer_index].buffer_offset + velem[i].src_offset) % 4 != 0) {
+            /* XXX We must align the buffer. */
+            assert(0);
+            fprintf(stderr, "r300: Unaligned vertex buffer offsets aren't supported, aborting..\n");
+            abort();
+        }
+    }
+
     BEGIN_CS(2 + packet_size + aos_count * 2);
     OUT_CS_PKT3(R300_PACKET3_3D_LOAD_VBPNTR, packet_size);
-    OUT_CS(aos_count);
+    OUT_CS(aos_count | (!indexed ? R300_VC_FORCE_PREFETCH : 0));
 
     for (i = 0; i < aos_count - 1; i += 2) {
         vb1 = &vbuf[velem[i].vertex_buffer_index];
@@ -899,39 +894,20 @@ void r300_emit_vertex_stream_state(struct r300_context* r300,
 
     BEGIN_CS(size);
     OUT_CS_REG_SEQ(R300_VAP_PROG_STREAM_CNTL_0, streams->count);
+    OUT_CS_TABLE(streams->vap_prog_stream_cntl, streams->count);
     for (i = 0; i < streams->count; i++) {
-        OUT_CS(streams->vap_prog_stream_cntl[i]);
         DBG(r300, DBG_DRAW, "    : prog_stream_cntl%d: 0x%08x\n", i,
                streams->vap_prog_stream_cntl[i]);
     }
     OUT_CS_REG_SEQ(R300_VAP_PROG_STREAM_CNTL_EXT_0, streams->count);
+    OUT_CS_TABLE(streams->vap_prog_stream_cntl_ext, streams->count);
     for (i = 0; i < streams->count; i++) {
-        OUT_CS(streams->vap_prog_stream_cntl_ext[i]);
         DBG(r300, DBG_DRAW, "    : prog_stream_cntl_ext%d: 0x%08x\n", i,
                streams->vap_prog_stream_cntl_ext[i]);
     }
     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);
@@ -978,9 +954,7 @@ void r300_emit_vs_state(struct r300_context* r300, unsigned size, void* state)
 
     OUT_CS_REG(R300_VAP_PVS_VECTOR_INDX_REG, 0);
     OUT_CS_ONE_REG(R300_VAP_PVS_UPLOAD_DATA, code->length);
-    for (i = 0; i < code->length; i++) {
-        OUT_CS(code->body.d[i]);
-    }
+    OUT_CS_TABLE(code->body.d, code->length);
 
     OUT_CS_REG(R300_VAP_CNTL, R300_PVS_NUM_SLOTS(pvs_num_slots) |
             R300_PVS_NUM_CNTLRS(pvs_num_controllers) |
@@ -997,10 +971,7 @@ void r300_emit_vs_state(struct r300_context* r300, unsigned size, void* state)
         OUT_CS_ONE_REG(R300_VAP_PVS_UPLOAD_DATA, imm_count * 4);
         for (i = imm_first; i < imm_end; i++) {
             const float *data = vs->code.constants.Constants[i].u.Immediate;
-            OUT_CS_32F(data[0]);
-            OUT_CS_32F(data[1]);
-            OUT_CS_32F(data[2]);
-            OUT_CS_32F(data[3]);
+            OUT_CS_TABLE(data, 4);
         }
     }
     END_CS;
@@ -1009,7 +980,6 @@ void r300_emit_vs_state(struct r300_context* r300, unsigned size, void* state)
 void r300_emit_vs_constants(struct r300_context* r300,
                             unsigned size, void *state)
 {
-    unsigned i;
     unsigned count =
         ((struct r300_vertex_shader*)r300->vs_state.state)->externals_count;
     struct r300_constant_buffer *buf = (struct r300_constant_buffer*)state;
@@ -1023,13 +993,7 @@ void r300_emit_vs_constants(struct r300_context* r300,
                (r300->screen->caps.is_r500 ?
                R500_PVS_CONST_START : R300_PVS_CONST_START));
     OUT_CS_ONE_REG(R300_VAP_PVS_UPLOAD_DATA, count * 4);
-    for (i = 0; i < count; i++) {
-        const float *data = buf->constants[i];
-        OUT_CS_32F(data[0]);
-        OUT_CS_32F(data[1]);
-        OUT_CS_32F(data[2]);
-        OUT_CS_32F(data[3]);
-    }
+    OUT_CS_TABLE(buf->constants, count * 4);
     END_CS;
 }
 
@@ -1188,6 +1152,11 @@ unsigned r300_get_num_dirty_dwords(struct r300_context *r300)
         }
     }
 
+    /* emit_query_end is not atomized. */
+    dwords += 26;
+    /* let's reserve some more, just in case */
+    dwords += 32;
+
     return dwords;
 }
 
@@ -1200,6 +1169,9 @@ void r300_emit_dirty_state(struct r300_context* r300)
     foreach(atom, &r300->atom_list) {
         if (atom->dirty) {
             atom->emit(r300, atom->size, atom->state);
+            if (SCREEN_DBG_ON(r300->screen, DBG_STATS)) {
+                atom->counter++;
+            }
             atom->dirty = FALSE;
         }
     }
index 56f7318cdbec97ec45f8150495183690da7b4348..3c0edf6fdcae57d3cbc5e335e8fbe73d6fd2e9f1 100644 (file)
@@ -29,7 +29,7 @@
 struct rX00_fragment_program_code;
 struct r300_vertex_program_code;
 
-void r300_emit_aos(struct r300_context* r300, unsigned offset);
+void r300_emit_aos(struct r300_context* r300, unsigned offset, boolean indexed);
 
 void r300_emit_blend_state(struct r300_context* r300,
                            unsigned size, void* state);
@@ -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);
 
index 4d61f6385301d53b8793e548509a72f31c912a97..88303f074cd8a1039adf53e77b473fa91772abde 100644 (file)
@@ -275,6 +275,14 @@ static void r300_translate_fragment_shader(
     /* Invoke the compiler */
     r3xx_compile_fragment_program(&compiler);
 
+    /* Shaders with zero instructions are invalid,
+     * use the dummy shader instead. */
+    if (shader->code.code.r500.inst_end == -1) {
+        rc_destroy(&compiler.Base);
+        r300_dummy_fragment_shader(r300, shader);
+        return;
+    }
+
     if (compiler.Base.Error) {
         fprintf(stderr, "r300 FP: Compiler Error:\n%sUsing a dummy shader"
                 " instead.\n", compiler.Base.ErrorMsg);
diff --git a/src/gallium/drivers/r300/r300_hyperz.c b/src/gallium/drivers/r300/r300_hyperz.c
new file mode 100644 (file)
index 0000000..b41b6b1
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com>
+ * Copyright 2009 Marek Olšák <maraeo@gmail.com>
+ *
+ * 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
+ * on 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
+ * THE AUTHOR(S) AND/OR THEIR 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 "r300_hyperz.h"
+#include "r300_context.h"
+#include "r300_reg.h"
+#include "r300_fs.h"
+
+/*****************************************************************************/
+/* The ZTOP state                                                            */
+/*****************************************************************************/
+
+static boolean r300_dsa_writes_depth_stencil(struct r300_dsa_state* dsa)
+{
+    /* We are interested only in the cases when a new depth or stencil value
+     * can be written and changed. */
+
+    /* We might optionally check for [Z func: never] and inspect the stencil
+     * state in a similar fashion, but it's not terribly important. */
+    return (dsa->z_buffer_control & R300_Z_WRITE_ENABLE) ||
+           (dsa->stencil_ref_mask & R300_STENCILWRITEMASK_MASK) ||
+           ((dsa->z_buffer_control & R500_STENCIL_REFMASK_FRONT_BACK) &&
+            (dsa->stencil_ref_bf & R300_STENCILWRITEMASK_MASK));
+}
+
+static boolean r300_dsa_alpha_test_enabled(struct r300_dsa_state* dsa)
+{
+    /* We are interested only in the cases when alpha testing can kill
+     * a fragment. */
+    uint32_t af = dsa->alpha_function;
+
+    return (af & R300_FG_ALPHA_FUNC_ENABLE) &&
+           (af & R300_FG_ALPHA_FUNC_ALWAYS) != R300_FG_ALPHA_FUNC_ALWAYS;
+}
+
+static void r300_update_ztop(struct r300_context* r300)
+{
+    struct r300_ztop_state* ztop_state =
+        (struct r300_ztop_state*)r300->ztop_state.state;
+
+    /* This is important enough that I felt it warranted a comment.
+     *
+     * According to the docs, these are the conditions where ZTOP must be
+     * disabled:
+     * 1) Alpha testing enabled
+     * 2) Texture kill instructions in fragment shader
+     * 3) Chroma key culling enabled
+     * 4) W-buffering enabled
+     *
+     * The docs claim that for the first three cases, if no ZS writes happen,
+     * then ZTOP can be used.
+     *
+     * (3) will never apply since we do not support chroma-keyed operations.
+     * (4) will need to be re-examined (and this comment updated) if/when
+     * Hyper-Z becomes supported.
+     *
+     * Additionally, the following conditions require disabled ZTOP:
+     * 5) Depth writes in fragment shader
+     * 6) Outstanding occlusion queries
+     *
+     * This register causes stalls all the way from SC to CB when changed,
+     * but it is buffered on-chip so it does not hurt to write it if it has
+     * not changed.
+     *
+     * ~C.
+     */
+
+    /* ZS writes */
+    if (r300_dsa_writes_depth_stencil(r300->dsa_state.state) &&
+           (r300_dsa_alpha_test_enabled(r300->dsa_state.state) ||  /* (1) */
+            r300_fs(r300)->shader->info.uses_kill)) {              /* (2) */
+        ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
+    } else if (r300_fragment_shader_writes_depth(r300_fs(r300))) { /* (5) */
+        ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
+    } else if (r300->query_current) {                              /* (6) */
+        ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
+    } else {
+        ztop_state->z_buffer_top = R300_ZTOP_ENABLE;
+    }
+
+    r300->ztop_state.dirty = TRUE;
+}
+
+void r300_update_hyperz_state(struct r300_context* r300)
+{
+    r300_update_ztop(r300);
+}
diff --git a/src/gallium/drivers/r300/r300_hyperz.h b/src/gallium/drivers/r300/r300_hyperz.h
new file mode 100644 (file)
index 0000000..3df5053
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2010 Marek Olšák <maraeo@gmail.com>
+ *
+ * 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
+ * on 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
+ * THE AUTHOR(S) AND/OR THEIR 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 R300_HYPERZ_H
+#define R300_HYPERZ_H
+
+struct r300_context;
+
+void r300_update_hyperz_state(struct r300_context* r300);
+
+#endif
index 239f91443f25fe084636cf532e518a7d60cc487b..675a9317f9cbf258aa49f27c3b5c244a4fe1fe16 100644 (file)
@@ -3377,7 +3377,7 @@ enum {
  * the last block is omitted.
  */
 #define R300_PACKET3_3D_LOAD_VBPNTR         0x00002F00
-
+#   define R300_VC_FORCE_PREFETCH  (1 << 5)
 #   define R300_VBPNTR_SIZE0(x)    ((x) >> 2)
 #   define R300_VBPNTR_STRIDE0(x)  (((x) >> 2) << 8)
 #   define R300_VBPNTR_SIZE1(x)    (((x) >> 2) << 16)
index 23b61df89cc775703789531430d0426033f5d53d..7c3a7902a49372a680284a926cae116cca95b9b5 100644 (file)
@@ -41,9 +41,6 @@
 #include "r300_render.h"
 #include "r300_state_derived.h"
 
-/* XXX The DRM rejects VAP_ALT_NUM_VERTICES.. */
-//#define ENABLE_ALT_NUM_VERTS
-
 static uint32_t r300_translate_primitive(unsigned prim)
 {
     switch (prim) {
@@ -169,6 +166,24 @@ static boolean immd_is_good_idea(struct r300_context *r300,
  * after resolving fallback issues (e.g. stencil ref two-sided).             *
  ****************************************************************************/
 
+static boolean r500_emit_index_offset(struct r300_context *r300, int indexBias)
+{
+    CS_LOCALS(r300);
+
+    if (r300->screen->caps.is_r500 &&
+        r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0)) {
+        BEGIN_CS(2);
+        OUT_CS_REG(R500_VAP_INDEX_OFFSET,
+                   (indexBias & 0xFFFFFF) | (indexBias < 0 ? 1<<24 : 0));
+        END_CS;
+    } else {
+        if (indexBias)
+            return FALSE; /* Can't do anything :( */
+    }
+
+    return TRUE;
+}
+
 void r500_emit_draw_arrays_immediate(struct r300_context *r300,
                                      unsigned mode,
                                      unsigned start,
@@ -220,10 +235,12 @@ void r500_emit_draw_arrays_immediate(struct r300_context *r300,
 
     dwords = 9 + count * vertex_size;
 
-    r300_reserve_cs_space(r300, r300_get_num_dirty_dwords(r300) + dwords);
+    r300_reserve_cs_space(r300, r300_get_num_dirty_dwords(r300) + 2 + dwords);
     r300_emit_buffer_validate(r300, FALSE, NULL);
     r300_emit_dirty_state(r300);
 
+    r500_emit_index_offset(r300, 0);
+
     BEGIN_CS(dwords);
     OUT_CS_REG(R300_GA_COLOR_CONTROL,
             r300_provoking_vertex_fixes(r300, mode));
@@ -265,23 +282,20 @@ void r500_emit_draw_arrays(struct r300_context *r300,
                            unsigned mode,
                            unsigned count)
 {
-#if defined(ENABLE_ALT_NUM_VERTS)
     boolean alt_num_verts = count > 65535;
-#else
-    boolean alt_num_verts = FALSE;
-#endif
     CS_LOCALS(r300);
 
+    if (count >= (1 << 24)) {
+        fprintf(stderr, "r300: Got a huge number of vertices: %i, "
+                "refusing to render.\n", count);
+        return;
+    }
+
+    r500_emit_index_offset(r300, 0);
+
+    BEGIN_CS(7 + (alt_num_verts ? 2 : 0));
     if (alt_num_verts) {
-        if (count >= (1 << 24)) {
-            fprintf(stderr, "r300: Got a huge number of vertices: %i, "
-                    "refusing to render.\n", count);
-            return;
-        }
-        BEGIN_CS(9);
         OUT_CS_REG(R500_VAP_ALT_NUM_VERTICES, count);
-    } else {
-        BEGIN_CS(7);
     }
     OUT_CS_REG(R300_GA_COLOR_CONTROL,
             r300_provoking_vertex_fixes(r300, mode));
@@ -307,11 +321,7 @@ void r500_emit_draw_elements(struct r300_context *r300,
 {
     uint32_t count_dwords;
     uint32_t offset_dwords = indexSize * start / sizeof(uint32_t);
-#if defined(ENABLE_ALT_NUM_VERTS)
     boolean alt_num_verts = count > 65535;
-#else
-    boolean alt_num_verts = FALSE;
-#endif
     CS_LOCALS(r300);
 
     if (count >= (1 << 24)) {
@@ -320,18 +330,20 @@ void r500_emit_draw_elements(struct r300_context *r300,
         return;
     }
 
-    assert(indexBias == 0);
-
     maxIndex = MIN2(maxIndex, r300->vertex_buffer_max_index);
 
     DBG(r300, DBG_DRAW, "r300: Indexbuf of %u indices, min %u max %u\n",
         count, minIndex, maxIndex);
 
+    if (!r500_emit_index_offset(r300, indexBias)) {
+        fprintf(stderr, "r300: Got a non-zero index bias, "
+                "refusing to render.\n");
+        return;
+    }
+
+    BEGIN_CS(13 + (alt_num_verts ? 2 : 0));
     if (alt_num_verts) {
-        BEGIN_CS(15);
         OUT_CS_REG(R500_VAP_ALT_NUM_VERTICES, count);
-    } else {
-        BEGIN_CS(13);
     }
     OUT_CS_REG(R300_GA_COLOR_CONTROL,
             r300_provoking_vertex_fixes(r300, mode));
@@ -541,12 +553,9 @@ void r300_draw_range_elements(struct pipe_context* pipe,
 {
     struct r300_context* r300 = r300_context(pipe);
     struct pipe_resource* orgIndexBuffer = indexBuffer;
-#if defined(ENABLE_ALT_NUM_VERTS)
     boolean alt_num_verts = r300->screen->caps.is_r500 &&
-                            count > 65536;
-#else
-    boolean alt_num_verts = FALSE;
-#endif
+                            count > 65536 &&
+                            r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0);
     unsigned short_count;
 
     if (r300->skip_rendering) {
@@ -574,7 +583,7 @@ void r300_draw_range_elements(struct pipe_context* pipe,
     r300_reserve_cs_space(r300, r300_get_num_dirty_dwords(r300) + 128);
     r300_emit_buffer_validate(r300, TRUE, indexBuffer);
     r300_emit_dirty_state(r300);
-    r300_emit_aos(r300, 0);
+    r300_emit_aos(r300, 0, TRUE);
 
     u_upload_flush(r300->upload_vb);
     u_upload_flush(r300->upload_ib);
@@ -591,11 +600,12 @@ void r300_draw_range_elements(struct pipe_context* pipe,
             start += short_count;
             count -= short_count;
 
-            /* 16 spare dwords are enough for emit_draw_elements. */
-            if (count && r300_reserve_cs_space(r300, 16)) {
+            /* 16 spare dwords are enough for emit_draw_elements.
+             * Also reserve some space for emit_query_end. */
+            if (count && r300_reserve_cs_space(r300, 74)) {
                 r300_emit_buffer_validate(r300, TRUE, indexBuffer);
                 r300_emit_dirty_state(r300);
-                r300_emit_aos(r300, 0);
+                r300_emit_aos(r300, 0, TRUE);
             }
         } while (count);
     }
@@ -622,12 +632,9 @@ void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
                       unsigned start, unsigned count)
 {
     struct r300_context* r300 = r300_context(pipe);
-#if defined(ENABLE_ALT_NUM_VERTS)
     boolean alt_num_verts = r300->screen->caps.is_r500 &&
-                            count > 65536;
-#else
-    boolean alt_num_verts = FALSE;
-#endif
+                            count > 65536 &&
+                            r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0);
     unsigned short_count;
 
     if (r300->skip_rendering) {
@@ -650,20 +657,21 @@ void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
         r300_emit_dirty_state(r300);
 
         if (alt_num_verts || count <= 65535) {
-            r300_emit_aos(r300, start);
+            r300_emit_aos(r300, start, FALSE);
             r300->emit_draw_arrays(r300, mode, count);
         } else {
             do {
                 short_count = MIN2(count, 65535);
-                r300_emit_aos(r300, start);
+                r300_emit_aos(r300, start, FALSE);
                 r300->emit_draw_arrays(r300, mode, short_count);
 
                 start += short_count;
                 count -= short_count;
 
                 /* Again, we emit both AOS and draw_arrays so there should be
-                 * at least 128 spare dwords. */
-                if (count && r300_reserve_cs_space(r300, 128)) {
+                 * at least 128 spare dwords.
+                 * Also reserve some space for emit_query_end. */
+                if (count && r300_reserve_cs_space(r300, 186)) {
                     r300_emit_buffer_validate(r300, TRUE, NULL);
                     r300_emit_dirty_state(r300);
                 }
@@ -896,6 +904,8 @@ static void r500_render_draw_arrays(struct vbuf_render* render,
 
     DBG(r300, DBG_DRAW, "r300: Doing vbuf render, count %d\n", count);
 
+    r500_emit_index_offset(r300, 0);
+
     BEGIN_CS(2);
     OUT_CS_PKT3(R300_PACKET3_3D_DRAW_VBUF_2, 0);
     OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_LIST | (count << 16) |
@@ -918,6 +928,8 @@ static void r500_render_draw(struct vbuf_render* render,
     r300_emit_buffer_validate(r300, FALSE, NULL);
     r300_emit_dirty_state(r300);
 
+    r500_emit_index_offset(r300, 0);
+
     BEGIN_CS(dwords);
     OUT_CS_PKT3(R300_PACKET3_3D_DRAW_INDX_2, (count+1)/2);
     OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (count << 16) |
index 8fc1d5aa00ee86705674b304f48ad85c9d911a19..c03912670317f9d047b569f220f57069627a184b 100644 (file)
@@ -22,6 +22,7 @@
  * USE OR OTHER DEALINGS IN THE SOFTWARE. */
 
 #include "util/u_format.h"
+#include "util/u_format_s3tc.h"
 #include "util/u_memory.h"
 
 #include "r300_context.h"
@@ -319,6 +320,8 @@ struct pipe_screen* r300_create_screen(struct r300_winsys_screen *rws)
 
     r300_init_screen_resource_functions(r300screen);
 
+    util_format_s3tc_init();
+
     return &r300screen->screen;
 }
 
index 330bd9b36ba77a2453f596b1fa1138bd3c9b4733..735c233c9e2310bb2d75e1941ad7ab9b21f5caf7 100644 (file)
@@ -71,6 +71,8 @@ static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) {
 #define DBG_ANISOHQ 0x0000080
 #define DBG_NO_TILING 0x0000100
 #define DBG_NO_IMMD 0x0000200
+#define DBG_STATS   0x0000400
+#define DBG_RS      0x0000800
 /*@}*/
 
 static INLINE boolean SCREEN_DBG_ON(struct r300_screen * screen, unsigned flags)
index 9eb8539a655220c7bff4f09d8557e000e588f8c4..d31e7c53f71314610af5e0bc0aa7085cd5c00f58 100644 (file)
@@ -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. */
@@ -1072,11 +1035,9 @@ r300_create_sampler_view(struct pipe_context *pipe,
         swizzle[2] = templ->swizzle_b;
         swizzle[3] = templ->swizzle_a;
 
-        /* XXX Enable swizzles when they become supported. Now we get RGBA
-         * everywhere. And do testing! */
         view->format = tex->tx_format;
         view->format.format1 |= r300_translate_texformat(templ->format,
-                                                         0); /*swizzle);*/
+                                                         swizzle);
         if (r300_screen(pipe->screen)->caps.is_r500) {
             view->format.format2 |= r500_tx_format_msb_bit(templ->format);
         }
@@ -1271,6 +1232,7 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe,
 {
     struct r300_vertex_element_state *velems;
     unsigned i, size;
+    enum pipe_format *format;
 
     assert(count <= PIPE_MAX_ATTRIBS);
     velems = CALLOC_STRUCT(r300_vertex_element_state);
@@ -1279,21 +1241,88 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe,
         memcpy(velems->velem, attribs, sizeof(struct pipe_vertex_element) * count);
 
         if (r300_screen(pipe->screen)->caps.has_tcl) {
-            /* Check if the format is aligned to the size of DWORD. */
+            r300_vertex_psc(velems);
+
+            /* Check if the format is aligned to the size of DWORD.
+             * We only care about the blocksizes of the formats since
+             * swizzles are already set up. */
             for (i = 0; i < count; i++) {
-                size = util_format_get_blocksize(attribs[i].src_format);
+                format = &velems->velem[i].src_format;
+
+                /* Replace some formats with their aligned counterparts,
+                 * this is OK because we check for aligned strides too. */
+                switch (*format) {
+                    /* Align to RGBA8. */
+                    case PIPE_FORMAT_R8_UNORM:
+                    case PIPE_FORMAT_R8G8_UNORM:
+                    case PIPE_FORMAT_R8G8B8_UNORM:
+                        *format = PIPE_FORMAT_R8G8B8A8_UNORM;
+                        continue;
+                    case PIPE_FORMAT_R8_SNORM:
+                    case PIPE_FORMAT_R8G8_SNORM:
+                    case PIPE_FORMAT_R8G8B8_SNORM:
+                        *format = PIPE_FORMAT_R8G8B8A8_SNORM;
+                        continue;
+                    case PIPE_FORMAT_R8_USCALED:
+                    case PIPE_FORMAT_R8G8_USCALED:
+                    case PIPE_FORMAT_R8G8B8_USCALED:
+                        *format = PIPE_FORMAT_R8G8B8A8_USCALED;
+                        continue;
+                    case PIPE_FORMAT_R8_SSCALED:
+                    case PIPE_FORMAT_R8G8_SSCALED:
+                    case PIPE_FORMAT_R8G8B8_SSCALED:
+                        *format = PIPE_FORMAT_R8G8B8A8_SSCALED;
+                        continue;
+
+                    /* Align to RG16. */
+                    case PIPE_FORMAT_R16_UNORM:
+                        *format = PIPE_FORMAT_R16G16_UNORM;
+                        continue;
+                    case PIPE_FORMAT_R16_SNORM:
+                        *format = PIPE_FORMAT_R16G16_SNORM;
+                        continue;
+                    case PIPE_FORMAT_R16_USCALED:
+                        *format = PIPE_FORMAT_R16G16_USCALED;
+                        continue;
+                    case PIPE_FORMAT_R16_SSCALED:
+                        *format = PIPE_FORMAT_R16G16_SSCALED;
+                        continue;
+                    case PIPE_FORMAT_R16_FLOAT:
+                        *format = PIPE_FORMAT_R16G16_FLOAT;
+                        continue;
+
+                    /* Align to RGBA16. */
+                    case PIPE_FORMAT_R16G16B16_UNORM:
+                        *format = PIPE_FORMAT_R16G16B16A16_UNORM;
+                        continue;
+                    case PIPE_FORMAT_R16G16B16_SNORM:
+                        *format = PIPE_FORMAT_R16G16B16A16_SNORM;
+                        continue;
+                    case PIPE_FORMAT_R16G16B16_USCALED:
+                        *format = PIPE_FORMAT_R16G16B16A16_USCALED;
+                        continue;
+                    case PIPE_FORMAT_R16G16B16_SSCALED:
+                        *format = PIPE_FORMAT_R16G16B16A16_SSCALED;
+                        continue;
+                    case PIPE_FORMAT_R16G16B16_FLOAT:
+                        *format = PIPE_FORMAT_R16G16B16A16_FLOAT;
+                        continue;
+
+                    default:;
+                }
+
+                size = util_format_get_blocksize(*format);
 
                 if (size % 4 != 0) {
                     /* 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(attribs[i].src_format), size);
+                            util_format_name(*format), size);
                     assert(0);
                     abort();
                 }
             }
 
-            r300_vertex_psc(velems);
         }
     }
     return velems;
@@ -1359,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. */
 
index 46c192eae14b9513e7f4ea0e2cdf58afd358387f..e3adace0faa8e08c9525aefbda8450fbc5b1b764 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "r300_context.h"
 #include "r300_fs.h"
+#include "r300_hyperz.h"
 #include "r300_screen.h"
 #include "r300_shader_semantics.h"
 #include "r300_state.h"
@@ -42,6 +43,7 @@ enum r300_rs_swizzle {
     SWIZ_XYZW = 0,
     SWIZ_X001,
     SWIZ_XY01,
+    SWIZ_0001,
 };
 
 static void r300_draw_emit_attrib(struct r300_context* r300,
@@ -113,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));
@@ -169,10 +170,10 @@ static void r300_swtcl_vertex_psc(struct r300_context *r300)
 }
 
 static void r300_rs_col(struct r300_rs_block* rs, int id, int ptr,
-                        boolean swizzle_0001)
+                        enum r300_rs_swizzle swiz)
 {
     rs->ip[id] |= R300_RS_COL_PTR(ptr);
-    if (swizzle_0001) {
+    if (swiz == SWIZ_0001) {
         rs->ip[id] |= R300_RS_COL_FMT(R300_RS_COL_FMT_0001);
     } else {
         rs->ip[id] |= R300_RS_COL_FMT(R300_RS_COL_FMT_RGBA);
@@ -218,10 +219,10 @@ static void r300_rs_tex_write(struct r300_rs_block* rs, int id, int fp_offset)
 }
 
 static void r500_rs_col(struct r300_rs_block* rs, int id, int ptr,
-                        boolean swizzle_0001)
+                        enum r300_rs_swizzle swiz)
 {
     rs->ip[id] |= R500_RS_COL_PTR(ptr);
-    if (swizzle_0001) {
+    if (swiz == SWIZ_0001) {
         rs->ip[id] |= R500_RS_COL_FMT(R300_RS_COL_FMT_0001);
     } else {
         rs->ip[id] |= R500_RS_COL_FMT(R300_RS_COL_FMT_RGBA);
@@ -267,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;
-    void (*rX00_rs_col)(struct r300_rs_block*, int, int, boolean);
+    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;
@@ -295,18 +304,39 @@ 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. */
-            rX00_rs_col(&rs, col_count, i, FALSE);
+            /* 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++;
+
+                DBG(r300, DBG_RS,
+                    "r300: Rasterized color %i written to FS.\n", i);
+            } else {
+                DBG(r300, DBG_RS, "r300: Rasterized color %i unused.\n", i);
             }
             col_count++;
         } else {
@@ -314,26 +344,51 @@ static void r300_update_rs_block(struct r300_context* r300,
             /* If we try to set it to (0,0,0,1), it will lock up. */
             if (fs_inputs->color[i] != ATTR_UNUSED) {
                 fp_offset++;
+
+                DBG(r300, DBG_RS, "r300: FS input color %i unassigned%s.\n",
+                    i);
             }
         }
     }
 
+    /* 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);
-                if (sprite_coord)
-                    debug_printf("r300: SpriteCoord (generic index %i) is being written to reg %i\n", i, fp_offset);
                 fp_offset++;
+
+                DBG(r300, DBG_RS,
+                    "r300: Rasterized generic %i written to FS%s.\n",
+                    i, sprite_coord ? " (sprite coord)" : "");
+            } else {
+                DBG(r300, DBG_RS,
+                    "r300: Rasterized generic %i unused%s.\n",
+                    i, sprite_coord ? " (sprite coord)" : "");
             }
             tex_count++;
         } else {
@@ -341,20 +396,31 @@ static void r300_update_rs_block(struct r300_context* r300,
             /* If we try to set it to (0,0,0,1), it will lock up. */
             if (fs_inputs->generic[i] != ATTR_UNUSED) {
                 fp_offset++;
+
+                DBG(r300, DBG_RS, "r300: FS input generic %i unassigned%s.\n",
+                    i, sprite_coord ? " (sprite coord)" : "");
             }
         }
     }
 
     /* 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++;
+
+            DBG(r300, DBG_RS, "r300: Rasterized fog written to FS.\n");
+        } else {
+            DBG(r300, DBG_RS, "r300: Rasterized fog unused.\n");
         }
         tex_count++;
     } else {
@@ -362,25 +428,47 @@ static void r300_update_rs_block(struct r300_context* r300,
         /* If we try to set it to (0,0,0,1), it will lock up. */
         if (fs_inputs->fog != ATTR_UNUSED) {
             fp_offset++;
+
+            DBG(r300, DBG_RS, "r300: FS input fog unassigned.\n");
         }
     }
 
     /* 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");
+
         fp_offset++;
         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, TRUE);
+        rX00_rs_col(&rs, 0, 0, SWIZ_0001);
         col_count++;
+
+        DBG(r300, DBG_RS, "r300: Rasterized color 0 to prevent lockups.\n");
     }
 
+    DBG(r300, DBG_RS, "r300: --- Rasterizer status ---: colors: %i, "
+        "generics: %i.\n", col_count, tex_count);
+
     rs.count = (tex_count*4) | (col_count << R300_IC_COUNT_SHIFT) |
         R300_HIRES_EN;
 
@@ -390,87 +478,8 @@ 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;
-    }
-}
-
-/* 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 boolean r300_dsa_writes_depth_stencil(struct r300_dsa_state* dsa)
-{
-    /* We are interested only in the cases when a new depth or stencil value
-     * can be written and changed. */
-
-    /* We might optionally check for [Z func: never] and inspect the stencil
-     * state in a similar fashion, but it's not terribly important. */
-    return (dsa->z_buffer_control & R300_Z_WRITE_ENABLE) ||
-           (dsa->stencil_ref_mask & R300_STENCILWRITEMASK_MASK) ||
-           ((dsa->z_buffer_control & R500_STENCIL_REFMASK_FRONT_BACK) &&
-            (dsa->stencil_ref_bf & R300_STENCILWRITEMASK_MASK));
-}
-
-static boolean r300_dsa_alpha_test_enabled(struct r300_dsa_state* dsa)
-{
-    /* We are interested only in the cases when alpha testing can kill
-     * a fragment. */
-    uint32_t af = dsa->alpha_function;
-
-    return (af & R300_FG_ALPHA_FUNC_ENABLE) &&
-           (af & R300_FG_ALPHA_FUNC_ALWAYS) != R300_FG_ALPHA_FUNC_ALWAYS;
-}
-
-static void r300_update_ztop(struct r300_context* r300)
-{
-    struct r300_ztop_state* ztop_state =
-        (struct r300_ztop_state*)r300->ztop_state.state;
-
-    /* This is important enough that I felt it warranted a comment.
-     *
-     * According to the docs, these are the conditions where ZTOP must be
-     * disabled:
-     * 1) Alpha testing enabled
-     * 2) Texture kill instructions in fragment shader
-     * 3) Chroma key culling enabled
-     * 4) W-buffering enabled
-     *
-     * The docs claim that for the first three cases, if no ZS writes happen,
-     * then ZTOP can be used.
-     *
-     * (3) will never apply since we do not support chroma-keyed operations.
-     * (4) will need to be re-examined (and this comment updated) if/when
-     * Hyper-Z becomes supported.
-     *
-     * Additionally, the following conditions require disabled ZTOP:
-     * 5) Depth writes in fragment shader
-     * 6) Outstanding occlusion queries
-     *
-     * This register causes stalls all the way from SC to CB when changed,
-     * but it is buffered on-chip so it does not hurt to write it if it has
-     * not changed.
-     *
-     * ~C.
-     */
-
-    /* ZS writes */
-    if (r300_dsa_writes_depth_stencil(r300->dsa_state.state) &&
-           (r300_dsa_alpha_test_enabled(r300->dsa_state.state) ||  /* (1) */
-            r300_fs(r300)->shader->info.uses_kill)) {              /* (2) */
-        ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
-    } else if (r300_fragment_shader_writes_depth(r300_fs(r300))) { /* (5) */
-        ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
-    } else if (r300->query_current) {                              /* (6) */
-        ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
-    } else {
-        ztop_state->z_buffer_top = R300_ZTOP_ENABLE;
+        r300->rs_block_state.size = 11 + count*2;
     }
-
-    r300->ztop_state.dirty = TRUE;
 }
 
 static void r300_merge_textures_and_samplers(struct r300_context* r300)
@@ -568,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) {
@@ -578,5 +587,5 @@ void r300_update_derived_state(struct r300_context* r300)
         r300_swtcl_vertex_psc(r300);
     }
 
-    r300_update_ztop(r300);
+    r300_update_hyperz_state(r300);
 }
index 480d0f7c4ae0c110d9a0c85124bb1792c10a98b8..fcbdb91b67e328cc23ed3a6358a89689b8edc89d 100644 (file)
@@ -374,6 +374,7 @@ r300_translate_vertex_data_type(enum pipe_format format) {
         fprintf(stderr, "r300: Bad format %s in %s:%d\n", util_format_name(format),
             __FUNCTION__, __LINE__);
         assert(0);
+        abort();
     }
 
     switch (desc->channel[0].type) {
@@ -395,6 +396,7 @@ r300_translate_vertex_data_type(enum pipe_format format) {
                     fprintf(stderr, "r300: Bad format %s in %s:%d\n",
                         util_format_name(format), __FUNCTION__, __LINE__);
                     assert(0);
+                    abort();
             }
             break;
         /* Unsigned ints */
@@ -418,12 +420,14 @@ r300_translate_vertex_data_type(enum pipe_format format) {
                     fprintf(stderr, "r300: desc->channel[0].size == %d\n",
                         desc->channel[0].size);
                     assert(0);
+                    abort();
             }
             break;
         default:
             fprintf(stderr, "r300: Bad format %s in %s:%d\n",
                 util_format_name(format), __FUNCTION__, __LINE__);
             assert(0);
+            abort();
     }
 
     if (desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED) {
@@ -439,6 +443,7 @@ r300_translate_vertex_data_type(enum pipe_format format) {
 static INLINE uint16_t
 r300_translate_vertex_data_swizzle(enum pipe_format format) {
     const struct util_format_description *desc = util_format_description(format);
+    unsigned i, swizzle = 0;
 
     assert(format);
 
@@ -448,11 +453,19 @@ r300_translate_vertex_data_swizzle(enum pipe_format format) {
         return 0;
     }
 
-    return ((desc->swizzle[0] << R300_SWIZZLE_SELECT_X_SHIFT) |
-            (desc->swizzle[1] << R300_SWIZZLE_SELECT_Y_SHIFT) |
-            (desc->swizzle[2] << R300_SWIZZLE_SELECT_Z_SHIFT) |
-            (desc->swizzle[3] << R300_SWIZZLE_SELECT_W_SHIFT) |
-            (0xf << R300_WRITE_ENA_SHIFT));
+    for (i = 0; i < desc->nr_channels; i++) {
+        swizzle |=
+            MIN2(desc->swizzle[i], R300_SWIZZLE_SELECT_FP_ONE) << (3*i);
+    }
+    /* Set (0,0,0,1) in unused components. */
+    for (; i < 3; i++) {
+        swizzle |= R300_SWIZZLE_SELECT_FP_ZERO << (3*i);
+    }
+    for (; i < 4; i++) {
+        swizzle |= R300_SWIZZLE_SELECT_FP_ONE << (3*i);
+    }
+
+    return swizzle | (0xf << R300_WRITE_ENA_SHIFT);
 }
 
 #endif /* R300_STATE_INLINES_H */
index 64d1d18b454629458fe7a8b8ea6709765ecfc546..cd9443fa260283df1db787059f36f3a92b4b1008 100644 (file)
@@ -43,15 +43,17 @@ void r300_emit_invariant_state(struct r300_context* r300,
 {
     CS_LOCALS(r300);
 
+    if (r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0)) {
+        /* Subpixel multisampling for AA. */
+        BEGIN_CS(4);
+        OUT_CS_REG(R300_GB_MSPOS0, 0x66666666);
+        OUT_CS_REG(R300_GB_MSPOS1, 0x6666666);
+        END_CS;
+    }
+
     BEGIN_CS(12 + (r300->screen->caps.has_tcl ? 2 : 0));
 
     /*** Graphics Backend (GB) ***/
-    /* Subpixel multisampling for AA
-     * These are commented out because glisse's CS checker doesn't like them.
-     * I presume these will be re-enabled later.
-     * OUT_CS_REG(R300_GB_MSPOS0, 0x66666666);
-     * OUT_CS_REG(R300_GB_MSPOS1, 0x6666666);
-     */
     /* Source of fog depth */
     OUT_CS_REG(R300_GB_SELECT, R300_GB_FOG_SELECT_1_1_W);
 
index 8bebeacf8600eee05fb86f997fbfb5e1d62e74a8..69e6a124458279f5aac6927a177efbeb2f46b44a 100644 (file)
@@ -34,9 +34,6 @@
 #include "r300_screen.h"
 #include "r300_winsys.h"
 
-/* XXX Enable float textures here. */
-/*#define ENABLE_FLOAT_TEXTURES*/
-
 #define TILE_WIDTH 0
 #define TILE_HEIGHT 1
 
@@ -74,7 +71,7 @@ static boolean r300_format_is_plain(enum pipe_format format)
  * The FORMAT specifies how the texture sampler will treat the texture, and
  * makes available X, Y, Z, W, ZERO, and ONE for swizzling. */
 uint32_t r300_translate_texformat(enum pipe_format format,
-                                  const unsigned char *swizzle)
+                                  const unsigned char *swizzle_view)
 {
     uint32_t result = 0;
     const struct util_format_description *desc;
@@ -98,6 +95,7 @@ uint32_t r300_translate_texformat(enum pipe_format format,
         R300_TX_FORMAT_SIGNED_Z,
         R300_TX_FORMAT_SIGNED_W,
     };
+    unsigned char swizzle[4];
 
     desc = util_format_description(format);
 
@@ -144,25 +142,18 @@ uint32_t r300_translate_texformat(enum pipe_format format,
             }
     }
 
-    /* Add swizzle. */
-    if (!swizzle) {
-        swizzle = desc->swizzle;
-    } /*else {
-        if (swizzle[0] != desc->swizzle[0] ||
-            swizzle[1] != desc->swizzle[1] ||
-            swizzle[2] != desc->swizzle[2] ||
-            swizzle[3] != desc->swizzle[3])
-        {
-            const char n[6] = "RGBA01";
-            fprintf(stderr, "Got different swizzling! Format: %c%c%c%c, "
-                    "View: %c%c%c%c\n",
-                    n[desc->swizzle[0]], n[desc->swizzle[1]],
-                    n[desc->swizzle[2]], n[desc->swizzle[3]],
-                    n[swizzle[0]], n[swizzle[1]], n[swizzle[2]],
-                    n[swizzle[3]]);
+    /* Get swizzle. */
+    if (swizzle_view) {
+        /* Compose two sets of swizzles. */
+        for (i = 0; i < 4; i++) {
+            swizzle[i] = swizzle_view[i] <= UTIL_FORMAT_SWIZZLE_W ?
+                         desc->swizzle[swizzle_view[i]] : swizzle_view[i];
         }
-    }*/
+    } else {
+        memcpy(swizzle, desc->swizzle, sizeof(swizzle));
+    }
 
+    /* Add swizzle. */
     for (i = 0; i < 4; i++) {
         switch (swizzle[i]) {
             case UTIL_FORMAT_SWIZZLE_X:
@@ -316,7 +307,6 @@ uint32_t r300_translate_texformat(enum pipe_format format,
             }
             return ~0;
 
-#if defined(ENABLE_FLOAT_TEXTURES)
         case UTIL_FORMAT_TYPE_FLOAT:
             switch (desc->channel[0].size) {
                 case 16:
@@ -340,7 +330,6 @@ uint32_t r300_translate_texformat(enum pipe_format format,
                             return R300_TX_FORMAT_32F_32F_32F_32F | result;
                     }
             }
-#endif
     }
 
     return ~0; /* Unsupported/unknown. */
@@ -405,16 +394,12 @@ static uint32_t r300_translate_colorformat(enum pipe_format format)
         /* 64-bit buffers. */
         case PIPE_FORMAT_R16G16B16A16_UNORM:
         case PIPE_FORMAT_R16G16B16A16_SNORM:
-#if defined(ENABLE_FLOAT_TEXTURES)
         case PIPE_FORMAT_R16G16B16A16_FLOAT:
-#endif
             return R300_COLOR_FORMAT_ARGB16161616;
 
         /* 128-bit buffers. */
-#if defined(ENABLE_FLOAT_TEXTURES)
         case PIPE_FORMAT_R32G32B32A32_FLOAT:
             return R300_COLOR_FORMAT_ARGB32323232;
-#endif
 
         /* YUV buffers. */
         case PIPE_FORMAT_UYVY:
@@ -532,7 +517,7 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format)
         case PIPE_FORMAT_R10SG10SB10SA2U_NORM:
         case PIPE_FORMAT_R16G16B16A16_UNORM:
         case PIPE_FORMAT_R16G16B16A16_SNORM:
-        //case PIPE_FORMAT_R16G16B16A16_FLOAT: /* not in pipe_format */
+        case PIPE_FORMAT_R16G16B16A16_FLOAT:
         case PIPE_FORMAT_R32G32B32A32_FLOAT:
             return modifier |
                 R300_C0_SEL_R | R300_C1_SEL_G |
@@ -573,7 +558,7 @@ static void r300_texture_setup_immutable_state(struct r300_screen* screen,
     if (tex->uses_pitch) {
         /* rectangles love this */
         f->format0 |= R300_TX_PITCH_EN;
-        f->format2 = (tex->pitch[0] - 1) & 0x1fff;
+        f->format2 = (tex->hwpitch[0] - 1) & 0x1fff;
     } else {
         /* power of two textures (3D, mipmaps, and no pitch) */
         f->format0 |= R300_TX_DEPTH(util_logbase2(pt->depth0) & 0xf);
@@ -614,7 +599,7 @@ static void r300_texture_setup_fb_state(struct r300_screen* screen,
     if (util_format_is_depth_or_stencil(tex->b.b.format)) {
         for (i = 0; i <= tex->b.b.last_level; i++) {
             tex->fb_state.depthpitch[i] =
-                tex->pitch[i] |
+                tex->hwpitch[i] |
                 R300_DEPTHMACROTILE(tex->mip_macrotile[i]) |
                 R300_DEPTHMICROTILE(tex->microtile);
         }
@@ -622,7 +607,7 @@ static void r300_texture_setup_fb_state(struct r300_screen* screen,
     } else {
         for (i = 0; i <= tex->b.b.last_level; i++) {
             tex->fb_state.colorpitch[i] =
-                tex->pitch[i] |
+                tex->hwpitch[i] |
                 r300_translate_colorformat(tex->b.b.format) |
                 R300_COLOR_TILE(tex->mip_macrotile[i]) |
                 R300_COLOR_MICROTILE(tex->microtile);
@@ -762,12 +747,12 @@ static unsigned r300_texture_get_nblocksy(struct r300_texture* tex,
 static void r300_texture_3d_fix_mipmapping(struct r300_screen *screen,
                                            struct r300_texture *tex)
 {
-    /* The kernels <= 2.6.34-rc3 compute the size of mipmapped 3D textures
+    /* The kernels <= 2.6.34-rc4 compute the size of mipmapped 3D textures
      * incorrectly. This is a workaround to prevent CS from being rejected. */
 
     unsigned i, size;
 
-    if (screen->rws->get_value(screen->rws, R300_VID_TEX3D_MIP_BUG) &&
+    if (!screen->rws->get_value(screen->rws, R300_VID_DRM_2_3_0) &&
         tex->b.b.target == PIPE_TEXTURE_3D &&
         tex->b.b.last_level > 0) {
         size = 0;
@@ -813,6 +798,8 @@ static void r300_setup_miptree(struct r300_screen* screen,
         tex->size = tex->offset[i] + size;
         tex->layer_size[i] = layer_size;
         tex->pitch[i] = stride / util_format_get_blocksize(base->format);
+        tex->hwpitch[i] =
+                tex->pitch[i] * util_format_get_blockwidth(base->format);
 
         SCREEN_DBG(screen, DBG_TEX, "r300: Texture miptree: Level %d "
                 "(%dx%dx%d px, pitch %d bytes) %d bytes total, macrotiled %s\n",
index 453d42b188fcfc6fb68e6a250e9a422ba8bbfd41..ba79ec068a13e7c3f2727e89a6da9a61d1014b8c 100644 (file)
@@ -28,7 +28,7 @@
 struct r300_texture;
 
 uint32_t r300_translate_texformat(enum pipe_format format,
-                                  const unsigned char *swizzle);
+                                  const unsigned char *swizzle_view);
 
 uint32_t r500_tx_format_msb_bit(enum pipe_format format);
 
index f6428ed760f4df4cf5dd901d6f63990c96160bed..89f39af9761aa7823f6aceec7582842229cc0617 100644 (file)
@@ -108,11 +108,9 @@ static unsigned translate_opcode(unsigned opcode)
      /* case TGSI_OPCODE_BRK: return RC_OPCODE_BRK; */
         case TGSI_OPCODE_IF: return RC_OPCODE_IF;
      /* case TGSI_OPCODE_LOOP: return RC_OPCODE_LOOP; */
-     /* case TGSI_OPCODE_REP: return RC_OPCODE_REP; */
         case TGSI_OPCODE_ELSE: return RC_OPCODE_ELSE;
         case TGSI_OPCODE_ENDIF: return RC_OPCODE_ENDIF;
      /* case TGSI_OPCODE_ENDLOOP: return RC_OPCODE_ENDLOOP; */
-     /* case TGSI_OPCODE_ENDREP: return RC_OPCODE_ENDREP; */
      /* case TGSI_OPCODE_PUSHA: return RC_OPCODE_PUSHA; */
      /* case TGSI_OPCODE_POPA: return RC_OPCODE_POPA; */
         case TGSI_OPCODE_CEIL: return RC_OPCODE_CEIL;
index bfab9c3b014bfe553990eb637c47495c50348456..b7609bad8113a69ed7ac151c3056fcd885fc6f9a 100644 (file)
@@ -94,94 +94,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 +158,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 +196,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 +216,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 +247,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;
-}
index 56bcc3b70b8e6f69982a182ef0eb201c5a01dd42..57b3fbca0bb7216d64e1ab4a0ce0228c94279e41 100644 (file)
@@ -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 */
index 2bd40176d10dbadab4ac7fb0f2317546a4e58c9d..1642981eaa8328d11b077aa4697a1ed5c909d2f8 100644 (file)
@@ -39,7 +39,7 @@ enum r300_value_id {
     R300_VID_GB_PIPES,
     R300_VID_Z_PIPES,
     R300_VID_SQUARE_TILING_SUPPORT,
-    R300_VID_TEX3D_MIP_BUG,
+    R300_VID_DRM_2_3_0,
 };
 
 enum r300_reference_domain { /* bitfield */
@@ -119,6 +119,10 @@ struct r300_winsys_screen {
     /* Write a dword to the command buffer. */
     void (*write_cs_dword)(struct r300_winsys_screen* winsys, uint32_t dword);
 
+    /* Write a table of dwords to the command buffer. */
+    void (*write_cs_table)(struct r300_winsys_screen* winsys,
+                           const void *dwords, unsigned count);
+
     /* Write a relocated dword to the command buffer. */
     void (*write_cs_reloc)(struct r300_winsys_screen *winsys,
                            struct r300_winsys_buffer *buf,
index 5f130453c3968da6d2dc106325bd06208fc22799..ae3f00f33874e5c5ab29c79836f53e9072d88389 100644 (file)
@@ -69,11 +69,6 @@ softpipe_clear(struct pipe_context *pipe, unsigned buffers, const float *rgba,
 
          util_pack_color(rgba, ps->format, &uc);
          sp_tile_cache_clear(softpipe->cbuf_cache[i], rgba, uc.ui);
-
-#if !TILE_CLEAR_OPTIMIZATION
-         /* non-cached surface */
-         pipe->surface_fill(pipe, ps, 0, 0, ps->width, ps->height, uc.ui);
-#endif
       }
    }
 
@@ -83,11 +78,6 @@ softpipe_clear(struct pipe_context *pipe, unsigned buffers, const float *rgba,
 
       cv = util_pack_z_stencil(ps->format, depth, stencil);
       sp_tile_cache_clear(softpipe->zsbuf_cache, zero, cv);
-
-#if !TILE_CLEAR_OPTIMIZATION
-      /* non-cached surface */
-      pipe->surface_fill(pipe, ps, 0, 0, ps->width, ps->height, cv);
-#endif
    }
 
    softpipe->dirty_render_cache = TRUE;
index 508fe8f764d06aabb1b4e8102a3128041d85a4f6..5024fc8a81941147c54ca6c0762b678df9aeb96a 100644 (file)
@@ -104,3 +104,71 @@ softpipe_flush( struct pipe_context *pipe,
       *fence = NULL;
 }
 
+
+/**
+ * Flush context if necessary.
+ *
+ * Returns FALSE if it would have block, but do_not_block was set, TRUE
+ * otherwise.
+ *
+ * TODO: move this logic to an auxiliary library?
+ */
+boolean
+softpipe_flush_resource(struct pipe_context *pipe,
+                        struct pipe_resource *texture,
+                        unsigned face,
+                        unsigned level,
+                        unsigned flush_flags,
+                        boolean read_only,
+                        boolean cpu_access,
+                        boolean do_not_block)
+{
+   unsigned referenced;
+
+   referenced = pipe->is_resource_referenced(pipe, texture, face, level);
+
+   if ((referenced & PIPE_REFERENCED_FOR_WRITE) ||
+       ((referenced & PIPE_REFERENCED_FOR_READ) && !read_only)) {
+
+      /*
+       * TODO: The semantics of these flush flags are too obtuse. They should
+       * disappear and the pipe driver should just ensure that all visible
+       * side-effects happen when they need to happen.
+       */
+      if (referenced & PIPE_REFERENCED_FOR_WRITE)
+         flush_flags |= PIPE_FLUSH_RENDER_CACHE;
+
+      if (referenced & PIPE_REFERENCED_FOR_READ)
+         flush_flags |= PIPE_FLUSH_TEXTURE_CACHE;
+
+      if (cpu_access) {
+         /*
+          * Flush and wait.
+          */
+
+         struct pipe_fence_handle *fence = NULL;
+
+         if (do_not_block)
+            return FALSE;
+
+         pipe->flush(pipe, flush_flags, &fence);
+
+         if (fence) {
+            /*
+             * This is for illustrative purposes only, as softpipe does not
+             * have fences.
+             */
+            pipe->screen->fence_finish(pipe->screen, fence, 0);
+            pipe->screen->fence_reference(pipe->screen, &fence, NULL);
+         }
+      } else {
+         /*
+          * Just flush.
+          */
+
+         pipe->flush(pipe, flush_flags, NULL);
+      }
+   }
+
+   return TRUE;
+}
index 68d9b5fa835cb8646263b7e20f98dd263b2716e7..cb97482a71b33300c2117ba0efaf3a17f43ae50a 100644 (file)
 #ifndef SP_FLUSH_H
 #define SP_FLUSH_H
 
+#include "pipe/p_compiler.h"
+
 struct pipe_context;
 struct pipe_fence_handle;
 
-void softpipe_flush(struct pipe_context *pipe, unsigned flags,
-                    struct pipe_fence_handle **fence);
+void
+softpipe_flush(struct pipe_context *pipe, unsigned flags,
+               struct pipe_fence_handle **fence);
+
+boolean
+softpipe_flush_resource(struct pipe_context *pipe,
+                        struct pipe_resource *texture,
+                        unsigned face,
+                        unsigned level,
+                        unsigned flush_flags,
+                        boolean read_only,
+                        boolean cpu_access,
+                        boolean do_not_block);
 
 #endif
index 7b1e058ac8365d78ca72490c3446c3b525058a83..8bb0294238a219c7620ca8845693d07d78b2bcfc 100644 (file)
@@ -27,6 +27,7 @@
 
 
 #include "util/u_memory.h"
+#include "util/u_format.h"
 #include "util/u_format_s3tc.h"
 #include "pipe/p_defines.h"
 #include "pipe/p_screen.h"
@@ -70,6 +71,8 @@ softpipe_get_param(struct pipe_screen *screen, int param)
       return 1;
    case PIPE_CAP_GLSL:
       return 1;
+   case PIPE_CAP_SM3:
+      return 1;
    case PIPE_CAP_ANISOTROPIC_FILTER:
       return 0;
    case PIPE_CAP_POINT_SPRITE:
@@ -144,43 +147,77 @@ static boolean
 softpipe_is_format_supported( struct pipe_screen *screen,
                               enum pipe_format format, 
                               enum pipe_texture_target target,
-                              unsigned tex_usage, 
+                              unsigned bind,
                               unsigned geom_flags )
 {
    struct sw_winsys *winsys = softpipe_screen(screen)->winsys;
+   const struct util_format_description *format_desc;
 
    assert(target == PIPE_TEXTURE_1D ||
           target == PIPE_TEXTURE_2D ||
           target == PIPE_TEXTURE_3D ||
           target == PIPE_TEXTURE_CUBE);
 
-   switch(format) {
-   case PIPE_FORMAT_YUYV:
-   case PIPE_FORMAT_UYVY:
+   format_desc = util_format_description(format);
+   if (!format_desc)
       return FALSE;
 
-   case PIPE_FORMAT_DXT1_RGB:
-   case PIPE_FORMAT_DXT1_RGBA:
-   case PIPE_FORMAT_DXT3_RGBA:
-   case PIPE_FORMAT_DXT5_RGBA:
-      return util_format_s3tc_enabled;
+   if (bind & (PIPE_BIND_DISPLAY_TARGET |
+               PIPE_BIND_SCANOUT |
+               PIPE_BIND_SHARED)) {
+      if(!winsys->is_displaytarget_format_supported(winsys, bind, format))
+         return FALSE;
+   }
 
-   case PIPE_FORMAT_Z32_FLOAT:
-   case PIPE_FORMAT_NONE:
-      return FALSE;
+   if (bind & PIPE_BIND_RENDER_TARGET) {
+      if (format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS)
+         return FALSE;
 
-   default:
-      break;
+      /*
+       * Although possible, it is unnatural to render into compressed or YUV
+       * surfaces. So disable these here to avoid going into weird paths
+       * inside the state trackers.
+       */
+      if (format_desc->block.width != 1 ||
+          format_desc->block.height != 1)
+         return FALSE;
+
+      /*
+       * TODO: Unfortunately we cannot render into anything more than 32 bits
+       * because we encode color clear values into a 32bit word.
+       */
+      if (format_desc->block.bits > 32)
+         return FALSE;
    }
 
-   if(tex_usage & (PIPE_BIND_DISPLAY_TARGET |
-                   PIPE_BIND_SCANOUT |
-                   PIPE_BIND_SHARED)) {
-      if(!winsys->is_displaytarget_format_supported(winsys, tex_usage, format))
+   if (bind & PIPE_BIND_DEPTH_STENCIL) {
+      if (format_desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
          return FALSE;
+
+      /*
+       * TODO: Unfortunately we cannot render into anything more than 32 bits
+       * because we encode depth and stencil clear values into a 32bit word.
+       */
+      if (format_desc->block.bits > 32)
+         return FALSE;
+
+      /*
+       * TODO: eliminate this restriction
+       */
+      if (format == PIPE_FORMAT_Z32_FLOAT)
+         return FALSE;
+   }
+
+   /*
+    * All other operations (sampling, transfer, etc).
+    */
+
+   if (format_desc->layout == UTIL_FORMAT_LAYOUT_S3TC) {
+      return util_format_s3tc_enabled;
    }
 
-   /* XXX: this is often a lie.  Pull in logic from llvmpipe to fix.
+   /*
+    * Everything else should be supported by u_format.
     */
    return TRUE;
 }
index c79f5fb05a125882ec5d83c283d74fca35f82d2e..fbce9e042ba3522e669a8059d921290181a86387 100644 (file)
@@ -248,7 +248,8 @@ sp_find_cached_tile_tex(struct softpipe_tex_tile_cache *tc,
                              addr.bits.face, 
                              addr.bits.level, 
                              addr.bits.z, 
-                             PIPE_TRANSFER_READ, 0, 0,
+                             PIPE_TRANSFER_READ | PIPE_TRANSFER_UNSYNCHRONIZED,
+                             0, 0,
                              u_minify(tc->texture->width0, addr.bits.level),
                              u_minify(tc->texture->height0, addr.bits.level));
          
index 167b6b116175b6e9ecd011f5b06a04dc4e89b0cc..7aa85559b236d0d3a8dfa6f79782b8e0a5752c53 100644 (file)
@@ -39,6 +39,7 @@
 #include "util/u_transfer.h"
 
 #include "sp_context.h"
+#include "sp_flush.h"
 #include "sp_texture.h"
 #include "sp_screen.h"
 
@@ -213,6 +214,35 @@ softpipe_resource_get_handle(struct pipe_screen *screen,
 }
 
 
+/**
+ * Helper function to compute offset (in bytes) for a particular
+ * texture level/face/slice from the start of the buffer.
+ */
+static unsigned
+sp_get_tex_image_offset(const struct softpipe_resource *spr,
+                        unsigned level, unsigned face, unsigned zslice)
+{
+   const unsigned hgt = u_minify(spr->base.height0, level);
+   const unsigned nblocksy = util_format_get_nblocksy(spr->base.format, hgt);
+   unsigned offset = spr->level_offset[level];
+
+   if (spr->base.target == PIPE_TEXTURE_CUBE) {
+      assert(zslice == 0);
+      offset += face * nblocksy * spr->stride[level];
+   }
+   else if (spr->base.target == PIPE_TEXTURE_3D) {
+      assert(face == 0);
+      offset += zslice * nblocksy * spr->stride[level];
+   }
+   else {
+      assert(face == 0);
+      assert(zslice == 0);
+   }
+
+   return offset;
+}
+
+
 /**
  * Get a pipe_surface "view" into a texture resource.
  */
@@ -234,25 +264,12 @@ softpipe_get_tex_surface(struct pipe_screen *screen,
       ps->format = pt->format;
       ps->width = u_minify(pt->width0, level);
       ps->height = u_minify(pt->height0, level);
-      ps->offset = spr->level_offset[level];
+      ps->offset = sp_get_tex_image_offset(spr, level, face, zslice);
       ps->usage = usage;
 
       ps->face = face;
       ps->level = level;
       ps->zslice = zslice;
-
-      if (pt->target == PIPE_TEXTURE_CUBE) {
-         ps->offset += face * util_format_get_nblocksy(pt->format, u_minify(pt->height0, level)) *
-                       spr->stride[level];
-      }
-      else if (pt->target == PIPE_TEXTURE_3D) {
-         ps->offset += zslice * util_format_get_nblocksy(pt->format, u_minify(pt->height0, level)) *
-                       spr->stride[level];
-      }
-      else {
-         assert(face == 0);
-         assert(zslice == 0);
-      }
    }
    return ps;
 }
@@ -290,8 +307,8 @@ softpipe_get_transfer(struct pipe_context *pipe,
                      unsigned usage,
                      const struct pipe_box *box)
 {
-   struct softpipe_resource *sprex = softpipe_resource(resource);
-   struct softpipe_transfer *spr;
+   struct softpipe_resource *spr = softpipe_resource(resource);
+   struct softpipe_transfer *spt;
 
    assert(resource);
    assert(sr.level <= resource->last_level);
@@ -301,33 +318,41 @@ softpipe_get_transfer(struct pipe_context *pipe,
    assert(box->y + box->height <= u_minify(resource->height0, sr.level));
    assert(box->z + box->depth <= u_minify(resource->depth0, sr.level));
 
-   spr = CALLOC_STRUCT(softpipe_transfer);
-   if (spr) {
-      struct pipe_transfer *pt = &spr->base;
+   /*
+    * Transfers, like other pipe operations, must happen in order, so flush the
+    * context if necessary.
+    */
+   if (!(usage & PIPE_TRANSFER_UNSYNCHRONIZED)) {
+      boolean read_only = !(usage & PIPE_TRANSFER_WRITE);
+      boolean do_not_block = !!(usage & PIPE_TRANSFER_DONTBLOCK);
+      if (!softpipe_flush_resource(pipe, resource,
+                                   sr.face, sr.level,
+                                   0, /* flush_flags */
+                                   read_only,
+                                   TRUE, /* cpu_access */
+                                   do_not_block)) {
+         /*
+          * It would have blocked, but state tracker requested no to.
+          */
+         assert(do_not_block);
+         return NULL;
+      }
+   }
+
+   spt = CALLOC_STRUCT(softpipe_transfer);
+   if (spt) {
+      struct pipe_transfer *pt = &spt->base;
       enum pipe_format format = resource->format;
-      int nblocksy = util_format_get_nblocksy(resource->format, 
-                                             u_minify(resource->height0, sr.level));
       pipe_resource_reference(&pt->resource, resource);
       pt->sr = sr;
       pt->usage = usage;
       pt->box = *box;
-      pt->stride = sprex->stride[sr.level];
+      pt->stride = spr->stride[sr.level];
 
-      spr->offset = sprex->level_offset[sr.level];
-
-      if (resource->target == PIPE_TEXTURE_CUBE) {
-         spr->offset += sr.face * nblocksy * pt->stride;
-      }
-      else if (resource->target == PIPE_TEXTURE_3D) {
-         spr->offset += box->z * nblocksy * pt->stride;
-      }
-      else {
-         assert(sr.face == 0);
-         assert(box->z == 0);
-      }
-      
-      spr->offset += 
-        box->y / util_format_get_blockheight(format) * spr->base.stride +
+      spt->offset = sp_get_tex_image_offset(spr, sr.level, sr.face, box->z);
+      spt->offset += 
+        box->y / util_format_get_blockheight(format) * spt->base.stride +
         box->x / util_format_get_blockwidth(format) * util_format_get_blocksize(format);
 
       return pt;
@@ -356,26 +381,24 @@ static void *
 softpipe_transfer_map(struct pipe_context *pipe,
                       struct pipe_transfer *transfer)
 {
-   struct softpipe_transfer *sp_transfer = softpipe_transfer(transfer);
-   struct softpipe_resource *sp_resource = softpipe_resource(transfer->resource);
+   struct softpipe_transfer *spt = softpipe_transfer(transfer);
+   struct softpipe_resource *spr = softpipe_resource(transfer->resource);
    struct sw_winsys *winsys = softpipe_screen(pipe->screen)->winsys;
    uint8_t *map;
    
    /* resources backed by display target treated specially:
     */
-   if (sp_resource->dt) {
-      map = winsys->displaytarget_map(winsys,
-                                     sp_resource->dt,
-                                      transfer->usage);
+   if (spr->dt) {
+      map = winsys->displaytarget_map(winsys, spr->dt, transfer->usage);
    }
    else {
-      map = sp_resource->data;
+      map = spr->data;
    }
 
    if (map == NULL)
       return NULL;
    else
-      return map + sp_transfer->offset;
+      return map + spt->offset;
 }
 
 
@@ -412,26 +435,25 @@ softpipe_user_buffer_create(struct pipe_screen *screen,
                             unsigned bytes,
                            unsigned bind_flags)
 {
-   struct softpipe_resource *buffer;
+   struct softpipe_resource *spr;
 
-   buffer = CALLOC_STRUCT(softpipe_resource);
-   if(!buffer)
+   spr = CALLOC_STRUCT(softpipe_resource);
+   if (!spr)
       return NULL;
 
-   
-   pipe_reference_init(&buffer->base.reference, 1);
-   buffer->base.screen = screen;
-   buffer->base.format = PIPE_FORMAT_R8_UNORM; /* ?? */
-   buffer->base.bind = bind_flags;
-   buffer->base.usage = PIPE_USAGE_IMMUTABLE;
-   buffer->base.flags = 0;
-   buffer->base.width0 = bytes;
-   buffer->base.height0 = 1;
-   buffer->base.depth0 = 1;
-   buffer->userBuffer = TRUE;
-   buffer->data = ptr;
-
-   return &buffer->base;
+   pipe_reference_init(&spr->base.reference, 1);
+   spr->base.screen = screen;
+   spr->base.format = PIPE_FORMAT_R8_UNORM; /* ?? */
+   spr->base.bind = bind_flags;
+   spr->base.usage = PIPE_USAGE_IMMUTABLE;
+   spr->base.flags = 0;
+   spr->base.width0 = bytes;
+   spr->base.height0 = 1;
+   spr->base.depth0 = 1;
+   spr->userBuffer = TRUE;
+   spr->data = ptr;
+
+   return &spr->base;
 }
 
 
index d996c2a3427f65b2dcf4f7492ccb89046c8ed6fa..f4db6f6ef00c631571b0ab4741fe0ff08f0c7105 100644 (file)
@@ -103,7 +103,7 @@ sp_create_tile_cache( struct pipe_context *pipe )
        * However, it breaks clearing in other situations (such as in
        * progs/tests/drawbuffers, see bug 24402).
        */
-#if 0 && TILE_CLEAR_OPTIMIZATION
+#if 0
       /* set flags to indicate all the tiles are cleared */
       memset(tc->clear_flags, 255, sizeof(tc->clear_flags));
 #endif
@@ -155,7 +155,8 @@ sp_tile_cache_set_surface(struct softpipe_tile_cache *tc,
    if (ps) {
       tc->transfer = pipe_get_transfer(pipe, ps->texture, ps->face,
                                           ps->level, ps->zslice,
-                                          PIPE_TRANSFER_READ_WRITE,
+                                          PIPE_TRANSFER_READ_WRITE |
+                                          PIPE_TRANSFER_UNSYNCHRONIZED,
                                           0, 0, ps->width, ps->height);
 
       tc->depth_stencil = (ps->format == PIPE_FORMAT_Z24_UNORM_S8_USCALED ||
@@ -344,9 +345,7 @@ sp_flush_tile_cache(struct softpipe_tile_cache *tc)
          }
       }
 
-#if TILE_CLEAR_OPTIMIZATION
       sp_tile_cache_flush_clear(tc);
-#endif
    }
 
 #if 0
@@ -448,13 +447,8 @@ sp_tile_cache_clear(struct softpipe_tile_cache *tc, const float *rgba,
 
    tc->clear_val = clearValue;
 
-#if TILE_CLEAR_OPTIMIZATION
    /* set flags to indicate all the tiles are cleared */
    memset(tc->clear_flags, 255, sizeof(tc->clear_flags));
-#else
-   /* disable the optimization */
-   memset(tc->clear_flags, 0, sizeof(tc->clear_flags));
-#endif
 
    for (pos = 0; pos < NUM_ENTRIES; pos++) {
       struct softpipe_cached_tile *tile = tc->entries + pos;
index 753d8c0daac89fce8278d142df7b5d0ec9ad9327..e03d53eb24e51dd55d11350e351dfbcd15552cd8 100644 (file)
@@ -28,8 +28,6 @@
 #ifndef SP_TILE_CACHE_H
 #define SP_TILE_CACHE_H
 
-#define TILE_CLEAR_OPTIMIZATION 1
-
 
 #include "pipe/p_compiler.h"
 
index 005996d05d33f0db3868baf2e2718963b24989d6..da33fae62f179269588c7faac228a06662dd858f 100644 (file)
@@ -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;
 
index 15258c1966bd9aa205f4447cb600952e29e5b1d7..ba630582e594beda8e7b43689bffbab8e8ef5c44 100644 (file)
@@ -14,7 +14,7 @@ svga_resource_create(struct pipe_screen *screen,
    if (template->target == PIPE_BUFFER)
       return svga_buffer_create(screen, template);
    else
-      return svga_resource_create(screen, template);
+      return svga_texture_create(screen, template);
 
 }
 
@@ -26,7 +26,7 @@ svga_resource_from_handle(struct pipe_screen * screen,
    if (template->target == PIPE_BUFFER)
       return NULL;
    else
-      return svga_resource_from_handle(screen, template, whandle);
+      return svga_texture_from_handle(screen, template, whandle);
 }
 
 
index aeda3dcad51cfb7b5d3674b9df0292c79154d7f0..9fc613da74910de4ab18d4a3c4a4a3304017b033 100644 (file)
@@ -397,6 +397,7 @@ svga_screen_create(struct svga_winsys_screen *sws)
    screen->fence_finish = svga_fence_finish;
    svgascreen->sws = sws;
 
+   svga_screen_init_surface_functions(svgascreen);
    svga_init_screen_resource_functions(svgascreen);
 
    svgascreen->use_ps30 =
index dfaab53aef44291b8424d31457785ed452314e84..d34d68f5350f44642d8127cde9ed25bf07dc42b3 100644 (file)
@@ -43,7 +43,7 @@ svga_translate_vertex_format(enum pipe_format format)
    case PIPE_FORMAT_R32G32_FLOAT:         return SVGA3D_DECLTYPE_FLOAT2;
    case PIPE_FORMAT_R32G32B32_FLOAT:      return SVGA3D_DECLTYPE_FLOAT3;
    case PIPE_FORMAT_R32G32B32A32_FLOAT:   return SVGA3D_DECLTYPE_FLOAT4;
-   case PIPE_FORMAT_A8R8G8B8_UNORM:       return SVGA3D_DECLTYPE_D3DCOLOR;
+   case PIPE_FORMAT_B8G8R8A8_UNORM:       return SVGA3D_DECLTYPE_D3DCOLOR;
    case PIPE_FORMAT_R8G8B8A8_USCALED:     return SVGA3D_DECLTYPE_UBYTE4;
    case PIPE_FORMAT_R16G16_SSCALED:       return SVGA3D_DECLTYPE_SHORT2;
    case PIPE_FORMAT_R16G16B16A16_SSCALED: return SVGA3D_DECLTYPE_SHORT4;
@@ -52,14 +52,10 @@ svga_translate_vertex_format(enum pipe_format format)
    case PIPE_FORMAT_R16G16B16A16_SNORM:   return SVGA3D_DECLTYPE_SHORT4N;
    case PIPE_FORMAT_R16G16_UNORM:         return SVGA3D_DECLTYPE_USHORT2N;
    case PIPE_FORMAT_R16G16B16A16_UNORM:   return SVGA3D_DECLTYPE_USHORT4N;
-
-   /* These formats don't exist yet:
-    * 
-   case PIPE_FORMAT_R10G10B10_USCALED:    return SVGA3D_DECLTYPE_UDEC3;
-   case PIPE_FORMAT_R10G10B10_SNORM:      return SVGA3D_DECLTYPE_DEC3N;
+   case PIPE_FORMAT_R10G10B10X2_USCALED:  return SVGA3D_DECLTYPE_UDEC3;
+   case PIPE_FORMAT_R10G10B10X2_SNORM:    return SVGA3D_DECLTYPE_DEC3N;
    case PIPE_FORMAT_R16G16_FLOAT:         return SVGA3D_DECLTYPE_FLOAT16_2;
    case PIPE_FORMAT_R16G16B16A16_FLOAT:   return SVGA3D_DECLTYPE_FLOAT16_4;
-   */
 
    default:
       /* There are many formats without hardware support.  This case
index a6215c68cbede78c1f876857b22b01665bf8c5a8..5133c70593c1e131c55da8c766399bf0e94540d2 100644 (file)
@@ -229,7 +229,7 @@ static int update_zero_stride( struct svga_context *svga,
 
          translate->set_buffer(translate, vel->vertex_buffer_index,
                                mapped_buffer,
-                               vbuffer->stride);
+                               vbuffer->stride, vbuffer->max_index);
          translate->run(translate, 0, 1, 0,
                         svga->curr.zero_stride_constants);
 
index 3d4f56a67bd5388b7b90aac4808b7df307047103..7d7024c4a7d721bc840c94565a07cd2032d4a428 100644 (file)
@@ -49,9 +49,7 @@ translate_opcode(
    case TGSI_OPCODE_DP2A:       return SVGA3DOP_DP2ADD;
    case TGSI_OPCODE_DP3:        return SVGA3DOP_DP3;
    case TGSI_OPCODE_DP4:        return SVGA3DOP_DP4;
-   case TGSI_OPCODE_ENDFOR:     return SVGA3DOP_ENDLOOP;
    case TGSI_OPCODE_FRC:        return SVGA3DOP_FRC;
-   case TGSI_OPCODE_BGNFOR:     return SVGA3DOP_LOOP;
    case TGSI_OPCODE_MAD:        return SVGA3DOP_MAD;
    case TGSI_OPCODE_MAX:        return SVGA3DOP_MAX;
    case TGSI_OPCODE_MIN:        return SVGA3DOP_MIN;
@@ -2686,7 +2684,6 @@ needs_to_create_zero( struct svga_shader_emitter *emit )
 
    if (emit->info.opcode_count[TGSI_OPCODE_IF] >= 1 ||
        emit->info.opcode_count[TGSI_OPCODE_BGNLOOP] >= 1 ||
-       emit->info.opcode_count[TGSI_OPCODE_BGNFOR] >= 1 ||
        emit->info.opcode_count[TGSI_OPCODE_DDX] >= 1 ||
        emit->info.opcode_count[TGSI_OPCODE_DDY] >= 1 ||
        emit->info.opcode_count[TGSI_OPCODE_SGE] >= 1 ||
index 8216c06260f2c2c2d4e67ad651043bf304ef9cf3..71ba1e909dfabbcfb92290674221b3ede7bc04ee 100644 (file)
@@ -1142,12 +1142,12 @@ trace_context_set_vertex_buffers(struct pipe_context *_pipe,
    trace_dump_arg_end();
 
    if (num_buffers) {
-      struct pipe_vertex_buffer *_buffers = malloc(num_buffers * sizeof(*_buffers));
+      struct pipe_vertex_buffer *_buffers = MALLOC(num_buffers * sizeof(*_buffers));
       memcpy(_buffers, buffers, num_buffers * sizeof(*_buffers));
       for (i = 0; i < num_buffers; i++)
          _buffers[i].buffer = trace_resource_unwrap(tr_ctx, buffers[i].buffer);
       pipe->set_vertex_buffers(pipe, num_buffers, _buffers);
-      free(_buffers);
+      FREE(_buffers);
    } else {
       pipe->set_vertex_buffers(pipe, num_buffers, NULL);
    }
index eaa47df4066e28c8cc820ac6ff411c3f52ce651c..0dc8cca2648232faa7fa87785b57610a544b00fb 100644 (file)
@@ -73,7 +73,7 @@ trace_drm_destroy(struct drm_api *_api)
    if (api->destroy)
       api->destroy(api);
 
-   free(tr_api);
+   FREE(tr_api);
 }
 
 struct drm_api *
index 0a4bd584aecdc67a265c5132dbd8ce05c195df2f..1aa54f1423aef5c9e1981b5e87ea8796d602fdca 100644 (file)
@@ -269,7 +269,7 @@ enum pipe_transfer_usage {
     * - pipe_context::transfer_flush_region
     * - OpenGL's ARB_map_buffer_range extension, MAP_FLUSH_EXPLICIT_BIT flag.
     */
-   PIPE_TRANSFER_FLUSH_EXPLICIT = (1 << 11),
+   PIPE_TRANSFER_FLUSH_EXPLICIT = (1 << 11)
 
 };
 
@@ -291,10 +291,10 @@ enum pipe_transfer_usage {
 #define PIPE_BIND_TRANSFER_READ        (1 << 10) /* get_transfer */
 #define PIPE_BIND_CUSTOM               (1 << 16) /* state-tracker/winsys usages */
 
-/* The first two flags were previously part of the amorphous
+/* The first two flags above were previously part of the amorphous
  * TEXTURE_USAGE, most of which are now descriptions of the ways a
- * particular texture can be bound to the gallium pipeline.  These two
- * do not fit within that and probably need to be migrated to some
+ * particular texture can be bound to the gallium pipeline.  The two flags
+ * below do not fit within that and probably need to be migrated to some
  * other place.
  *
  * It seems like scanout is used by the Xorg state tracker to ask for
@@ -304,7 +304,7 @@ enum pipe_transfer_usage {
  *
  * The shared flag is quite underspecified, but certainly isn't a
  * binding flag - it seems more like a message to the winsys to create
- * a shareable allocation.  Could it mean that this texture is a valid argument for 
+ * a shareable allocation.
  */
 #define PIPE_BIND_SCANOUT     (1 << 14) /*  */
 #define PIPE_BIND_SHARED      (1 << 15) /* get_texture_handle ??? */
index 06ab4a848a40572157d953db09d9337f14300fdf..beff1ae8a925418e6b1ac82b53c5645062666e3c 100644 (file)
@@ -93,13 +93,13 @@ struct pipe_screen {
    /**
     * Check if the given pipe_format is supported as a texture or
     * drawing surface.
-    * \param tex_usage  bitmask of PIPE_BIND_*
+    * \param bindings  bitmask of PIPE_BIND_*
     * \param geom_flags  bitmask of PIPE_TEXTURE_GEOM_*
     */
    boolean (*is_format_supported)( struct pipe_screen *,
                                    enum pipe_format format,
                                    enum pipe_texture_target target,
-                                   unsigned tex_usage
+                                   unsigned bindings
                                    unsigned geom_flags );
 
    /**
index c5c480f1f0ecb630b7e4ebe4b8af8ab07dcb1cf6..e21aaacc18a3d4b4578640203ccff7fd2cb66540 100644 (file)
@@ -276,12 +276,10 @@ struct tgsi_property_data {
 #define TGSI_OPCODE_TXL                 72
 #define TGSI_OPCODE_BRK                 73
 #define TGSI_OPCODE_IF                  74
-#define TGSI_OPCODE_BGNFOR              75
-#define TGSI_OPCODE_REP                 76
+                                /* gap */
 #define TGSI_OPCODE_ELSE                77
 #define TGSI_OPCODE_ENDIF               78
-#define TGSI_OPCODE_ENDFOR              79
-#define TGSI_OPCODE_ENDREP              80
+                                /* gap */
 #define TGSI_OPCODE_PUSHA               81
 #define TGSI_OPCODE_POPA                82
 #define TGSI_OPCODE_CEIL                83
index 8897ff7c25932be8d482caf13dd1a9f0e4a29c2d..002d1c6b840a51888c167704c1e509791879fcb2 100644 (file)
  * tracker managers.
  */
 
-/**
- * The entry points of the state trackers.
- */
-#define ST_MODULE_OPENGL_SYMBOL      "st_module_OpenGL"
-#define ST_MODULE_OPENGL_ES1_SYMBOL  "st_module_OpenGL_ES1"
-#define ST_MODULE_OPENGL_ES2_SYMBOL  "st_module_OpenGL_ES2"
-#define ST_MODULE_OPENVG_SYMBOL      "st_module_OpenVG"
-
 /**
  * The supported rendering API of a state tracker.
  */
@@ -378,17 +370,6 @@ struct st_api
    struct st_context_iface *(*get_current)(struct st_api *stapi);
 };
 
-/**
- * Represent a state tracker.
- *
- * This is the entry point of a state tracker.
- */
-struct st_module
-{
-   enum st_api_type api;
-   struct st_api *(*create_api)(void);
-};
-
 /**
  * Return true if the visual has the specified buffers.
  */
@@ -399,9 +380,17 @@ st_visual_have_buffers(const struct st_visual *visual, unsigned mask)
 }
 
 /* these symbols may need to be dynamically lookup up */
-extern PUBLIC const struct st_module st_module_OpenGL;
-extern PUBLIC const struct st_module st_module_OpenGL_ES1;
-extern PUBLIC const struct st_module st_module_OpenGL_ES2;
-extern PUBLIC const struct st_module st_module_OpenVG;
+extern PUBLIC struct st_api * st_api_create_OpenGL(void);
+extern PUBLIC struct st_api * st_api_create_OpenGL_ES1(void);
+extern PUBLIC struct st_api * st_api_create_OpenGL_ES2(void);
+extern PUBLIC struct st_api * st_api_create_OpenVG(void);
+
+/**
+ * The entry points of the state trackers.
+ */
+#define ST_CREATE_OPENGL_SYMBOL      "st_api_create_OpenGL"
+#define ST_CREATE_OPENGL_ES1_SYMBOL  "st_api_create_OpenGL_ES1"
+#define ST_CREATE_OPENGL_ES2_SYMBOL  "st_api_create_OpenGL_ES2"
+#define ST_CREATE_OPENVG_SYMBOL      "st_api_create_OpenVG"
 
 #endif /* _ST_API_H_ */
index b0dd974a9649483899e3a8c5cc4d3dd506923513..f641b41ff8b5b618a6e0cab243c0b41bf0a7651e 100644 (file)
@@ -42,7 +42,7 @@
 struct pipe_fence_handle *
 dri1_swap_fences_pop_front(struct dri_drawable *draw)
 {
-   struct pipe_screen *screen = dri_screen(draw->sPriv)->pipe_screen;
+   struct pipe_screen *screen = dri_screen(draw->sPriv)->base.screen;
    struct pipe_fence_handle *fence = NULL;
 
    if (draw->cur_fences >= draw->desired_fences) {
@@ -58,7 +58,7 @@ void
 dri1_swap_fences_push_back(struct dri_drawable *draw,
                            struct pipe_fence_handle *fence)
 {
-   struct pipe_screen *screen = dri_screen(draw->sPriv)->pipe_screen;
+   struct pipe_screen *screen = dri_screen(draw->sPriv)->base.screen;
 
    if (!fence)
       return;
@@ -74,7 +74,7 @@ dri1_swap_fences_push_back(struct dri_drawable *draw,
 void
 dri1_swap_fences_clear(struct dri_drawable *drawable)
 {
-   struct pipe_screen *screen = dri_screen(drawable->sPriv)->pipe_screen;
+   struct pipe_screen *screen = dri_screen(drawable->sPriv)->base.screen;
    struct pipe_fence_handle *fence;
 
    while (drawable->cur_fences) {
@@ -86,7 +86,7 @@ dri1_swap_fences_clear(struct dri_drawable *drawable)
 struct pipe_surface *
 dri1_get_pipe_surface(struct dri_drawable *drawable, struct pipe_resource *ptex)
 {
-   struct pipe_screen *pipe_screen = dri_screen(drawable->sPriv)->pipe_screen;
+   struct pipe_screen *pipe_screen = dri_screen(drawable->sPriv)->base.screen;
    struct pipe_surface *psurf = drawable->dri1_surface;
 
    if (!psurf || psurf->texture != ptex) {
@@ -114,7 +114,7 @@ dri1_get_pipe_context(struct dri_screen *screen)
 
    if (!pipe) {
       screen->dri1_pipe =
-         screen->pipe_screen->context_create(screen->pipe_screen, NULL);
+         screen->base.screen->context_create(screen->base.screen, NULL);
       pipe = screen->dri1_pipe;
    }
 
index f14f4130bf4b2158a73f5e9f834c41724ed0a846..a808d2d9ddfe2891ac7d4905f02cb01b61f0dcbc 100644 (file)
@@ -34,7 +34,6 @@
 #include "dri_screen.h"
 #include "dri_drawable.h"
 #include "dri_context.h"
-#include "dri_st_api.h"
 
 #include "pipe/p_context.h"
 #include "state_tracker/st_context.h"
@@ -53,9 +52,9 @@ GLboolean
 dri_create_context(const __GLcontextModes * visual,
                   __DRIcontext * cPriv, void *sharedContextPrivate)
 {
-   struct st_api *stapi = dri_get_st_api();
    __DRIscreen *sPriv = cPriv->driScreenPriv;
    struct dri_screen *screen = dri_screen(sPriv);
+   struct st_api *stapi = screen->st_api;
    struct dri_context *ctx = NULL;
    struct st_context_iface *st_share = NULL;
    struct st_visual stvis;
@@ -77,7 +76,7 @@ dri_create_context(const __GLcontextModes * visual,
                       &screen->optionCache, sPriv->myNum, "dri");
 
    dri_fill_st_visual(&stvis, screen, visual);
-   ctx->st = stapi->create_context(stapi, screen->smapi, &stvis, st_share);
+   ctx->st = stapi->create_context(stapi, &screen->base, &stvis, st_share);
    if (ctx->st == NULL)
       goto fail;
    ctx->st->st_manager_private = (void *) ctx;
@@ -119,16 +118,15 @@ dri_destroy_context(__DRIcontext * cPriv)
 GLboolean
 dri_unbind_context(__DRIcontext * cPriv)
 {
-   struct st_api *stapi = dri_get_st_api();
-
-   if (cPriv) {
-      struct dri_context *ctx = dri_context(cPriv);
+   /* dri_util.c ensures cPriv is not null */
+   struct dri_screen *screen = dri_screen(cPriv->driScreenPriv);
+   struct dri_context *ctx = dri_context(cPriv);
+   struct st_api *stapi = screen->st_api;
 
-      if (--ctx->bind_count == 0) {
-         if (ctx->st == stapi->get_current(stapi)) {
-            ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
-            stapi->make_current(stapi, NULL, NULL, NULL);
-         }
+   if (--ctx->bind_count == 0) {
+      if (ctx->st == stapi->get_current(stapi)) {
+         ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
+         stapi->make_current(stapi, NULL, NULL, NULL);
       }
    }
 
@@ -140,42 +138,38 @@ dri_make_current(__DRIcontext * cPriv,
                 __DRIdrawable * driDrawPriv,
                 __DRIdrawable * driReadPriv)
 {
-   struct st_api *stapi = dri_get_st_api();
-
-   if (cPriv) {
-      struct dri_context *ctx = dri_context(cPriv);
-      struct dri_drawable *draw = dri_drawable(driDrawPriv);
-      struct dri_drawable *read = dri_drawable(driReadPriv);
-      struct st_context_iface *old_st;
+   /* dri_util.c ensures cPriv is not null */
+   struct dri_screen *screen = dri_screen(cPriv->driScreenPriv);
+   struct dri_context *ctx = dri_context(cPriv);
+   struct st_api *stapi = screen->st_api;
+   struct dri_drawable *draw = dri_drawable(driDrawPriv);
+   struct dri_drawable *read = dri_drawable(driReadPriv);
+   struct st_context_iface *old_st = stapi->get_current(stapi);
 
-      old_st = stapi->get_current(stapi);
-      if (old_st && old_st != ctx->st)
-        ctx->st->flush(old_st, PIPE_FLUSH_RENDER_CACHE, NULL);
+   if (old_st && old_st != ctx->st)
+      old_st->flush(old_st, PIPE_FLUSH_RENDER_CACHE, NULL);
 
-      ++ctx->bind_count;
+   ++ctx->bind_count;
 
-      if (ctx->dPriv != driDrawPriv) {
-        ctx->dPriv = driDrawPriv;
-         draw->texture_stamp = driDrawPriv->lastStamp - 1;
-      }
-      if (ctx->rPriv != driReadPriv) {
-        ctx->rPriv = driReadPriv;
-         read->texture_stamp = driReadPriv->lastStamp - 1;
-      }
-
-      stapi->make_current(stapi, ctx->st, draw->stfb, read->stfb);
+   if (ctx->dPriv != driDrawPriv) {
+      ctx->dPriv = driDrawPriv;
+      draw->texture_stamp = driDrawPriv->lastStamp - 1;
    }
-   else {
-      stapi->make_current(stapi, NULL, NULL, NULL);
+   if (ctx->rPriv != driReadPriv) {
+      ctx->rPriv = driReadPriv;
+      read->texture_stamp = driReadPriv->lastStamp - 1;
    }
 
+   stapi->make_current(stapi, ctx->st, &draw->base, &read->base);
+
    return GL_TRUE;
 }
 
 struct dri_context *
-dri_get_current(void)
+dri_get_current(__DRIscreen *sPriv)
 {
-   struct st_api *stapi = dri_get_st_api();
+   struct dri_screen *screen = dri_screen(sPriv);
+   struct st_api *stapi = screen->st_api;
    struct st_context_iface *st;
 
    st = stapi->get_current(stapi);
index 594618874a4f8eb4f0854314ff99c4b8f4217b07..9fe6b581016653ee7459cd448f3bdbbbe1f3e7f5 100644 (file)
@@ -80,7 +80,7 @@ dri_make_current(__DRIcontext * driContextPriv,
                 __DRIdrawable * driReadPriv);
 
 struct dri_context *
-dri_get_current(void);
+dri_get_current(__DRIscreen * driScreenPriv);
 
 boolean
 dri_create_context(const __GLcontextModes * visual,
index 88c17e81bfb1dcd5e98bc9ce72d9795b84947d15..25892fc7a76898f5e7fc9951999c1810673c1847 100644 (file)
 #include "dri_screen.h"
 #include "dri_context.h"
 #include "dri_drawable.h"
-#include "dri_st_api.h"
 #include "dri1_helper.h"
 
 #include "pipe/p_screen.h"
 #include "util/u_format.h"
 #include "util/u_memory.h"
+#include "util/u_inlines.h"
  
+
+static boolean
+dri_st_framebuffer_validate(struct st_framebuffer_iface *stfbi,
+                            const enum st_attachment_type *statts,
+                            unsigned count,
+                            struct pipe_resource **out)
+{
+   struct dri_drawable *drawable =
+      (struct dri_drawable *) stfbi->st_manager_private;
+   struct dri_screen *screen = dri_screen(drawable->sPriv);
+   unsigned statt_mask, new_mask;
+   boolean new_stamp;
+   int i;
+
+   statt_mask = 0x0;
+   for (i = 0; i < count; i++)
+      statt_mask |= (1 << statts[i]);
+
+   /* record newly allocated textures */
+   new_mask = (statt_mask & ~drawable->texture_mask);
+
+   /*
+    * dPriv->pStamp is the server stamp.  It should be accessed with a lock, at
+    * least for DRI1.  dPriv->lastStamp is the client stamp.  It has the value
+    * of the server stamp when last checked.
+    */
+   new_stamp = (drawable->texture_stamp != drawable->dPriv->lastStamp);
+
+   if (new_stamp || new_mask) {
+      if (new_stamp && screen->update_drawable_info)
+         screen->update_drawable_info(drawable);
+
+      screen->allocate_textures(drawable, statts, count);
+
+      /* add existing textures */
+      for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
+         if (drawable->textures[i])
+            statt_mask |= (1 << i);
+      }
+
+      drawable->texture_stamp = drawable->dPriv->lastStamp;
+      drawable->texture_mask = statt_mask;
+   }
+
+   if (!out)
+      return TRUE;
+
+   for (i = 0; i < count; i++) {
+      out[i] = NULL;
+      pipe_resource_reference(&out[i], drawable->textures[statts[i]]);
+   }
+
+   return TRUE;
+}
+
+static boolean
+dri_st_framebuffer_flush_front(struct st_framebuffer_iface *stfbi,
+                               enum st_attachment_type statt)
+{
+   struct dri_drawable *drawable =
+      (struct dri_drawable *) stfbi->st_manager_private;
+   struct dri_screen *screen = dri_screen(drawable->sPriv);
+
+   /* XXX remove this and just set the correct one on the framebuffer */
+   screen->flush_frontbuffer(drawable, statt);
+
+   return TRUE;
+}
+
 /**
  * This is called when we need to set up GL rendering to a new X window.
  */
@@ -58,9 +127,12 @@ dri_create_buffer(__DRIscreen * sPriv,
       goto fail;
 
    dri_fill_st_visual(&drawable->stvis, screen, visual);
-   drawable->stfb = dri_create_st_framebuffer(drawable);
-   if (drawable->stfb == NULL)
-      goto fail;
+
+   /* setup the st_framebuffer_iface */
+   drawable->base.visual = &drawable->stvis;
+   drawable->base.flush_front = dri_st_framebuffer_flush_front;
+   drawable->base.validate = dri_st_framebuffer_validate;
+   drawable->base.st_manager_private = (void *) drawable;
 
    drawable->sPriv = sPriv;
    drawable->dPriv = dPriv;
@@ -78,16 +150,75 @@ void
 dri_destroy_buffer(__DRIdrawable * dPriv)
 {
    struct dri_drawable *drawable = dri_drawable(dPriv);
+   int i;
 
    dri1_swap_fences_clear(drawable);
 
    dri1_destroy_pipe_surface(drawable);
 
-   dri_destroy_st_framebuffer(drawable->stfb);
+   for (i = 0; i < ST_ATTACHMENT_COUNT; i++)
+      pipe_resource_reference(&drawable->textures[i], NULL);
 
    drawable->desired_fences = 0;
 
    FREE(drawable);
 }
 
+/**
+ * Validate the texture at an attachment.  Allocate the texture if it does not
+ * exist.
+ */
+void
+dri_drawable_validate_att(struct dri_drawable *drawable,
+                          enum st_attachment_type statt)
+{
+   enum st_attachment_type statts[ST_ATTACHMENT_COUNT];
+   unsigned i, count = 0;
+
+   /* check if buffer already exists */
+   if (drawable->texture_mask & (1 << statt))
+      return;
+
+   /* make sure DRI2 does not destroy existing buffers */
+   for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
+      if (drawable->texture_mask & (1 << i)) {
+         statts[count++] = i;
+      }
+   }
+   statts[count++] = statt;
+
+   drawable->texture_stamp = drawable->dPriv->lastStamp - 1;
+
+   /* this calles into the manager */
+   drawable->base.validate(&drawable->base, statts, count, NULL);
+}
+
+/**
+ * Get the format and binding of an attachment.
+ */
+void
+dri_drawable_get_format(struct dri_drawable *drawable,
+                        enum st_attachment_type statt,
+                        enum pipe_format *format,
+                        unsigned *bind)
+{
+   switch (statt) {
+   case ST_ATTACHMENT_FRONT_LEFT:
+   case ST_ATTACHMENT_BACK_LEFT:
+   case ST_ATTACHMENT_FRONT_RIGHT:
+   case ST_ATTACHMENT_BACK_RIGHT:
+      *format = drawable->stvis.color_format;
+      *bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW;
+      break;
+   case ST_ATTACHMENT_DEPTH_STENCIL:
+      *format = drawable->stvis.depth_stencil_format;
+      *bind = PIPE_BIND_DEPTH_STENCIL; /* XXX sampler? */
+      break;
+   default:
+      *format = PIPE_FORMAT_NONE;
+      *bind = 0;
+      break;
+   }
+}
+
 /* vim: set sw=3 ts=8 sts=3 expandtab: */
index 315b7781654dd97b68f9f6e1c5b6320d4048e717..5fd650ac88ec3d1436065c7050afc06331086809 100644 (file)
@@ -42,14 +42,13 @@ struct dri_context;
 
 struct dri_drawable
 {
+   struct st_framebuffer_iface base;
+   struct st_visual stvis;
+
    /* dri */
    __DRIdrawable *dPriv;
    __DRIscreen *sPriv;
 
-   /* gallium */
-   struct st_framebuffer_iface *stfb;
-   struct st_visual stvis;
-
    __DRIbuffer old[8];
    unsigned old_num;
    unsigned old_w;
@@ -84,6 +83,16 @@ dri_create_buffer(__DRIscreen * sPriv,
 
 void dri_destroy_buffer(__DRIdrawable * dPriv);
 
+void
+dri_drawable_get_format(struct dri_drawable *drawable,
+                        enum st_attachment_type statt,
+                        enum pipe_format *format,
+                        unsigned *bind);
+
+void
+dri_drawable_validate_att(struct dri_drawable *drawable,
+                          enum st_attachment_type statt);
+
 #endif
 
 /* vim: set sw=3 ts=8 sts=3 expandtab: */
index 4bfbc6e80b7f3603a83b76a330c3a76e48cfc021..064c73f54c2eafc96803ac3ab4f85902f1059c5c 100644 (file)
@@ -38,7 +38,6 @@
 #include "dri_screen.h"
 #include "dri_context.h"
 #include "dri_drawable.h"
-#include "dri_st_api.h"
 #include "dri1_helper.h"
 #ifndef __NOT_HAVE_DRM_H
 #include "dri1.h"
@@ -50,6 +49,7 @@
 #include "util/u_inlines.h"
 #include "pipe/p_screen.h"
 #include "pipe/p_format.h"
+#include "state_tracker/st_gl_api.h" /* for st_gl_api_create */
 
 #include "util/u_debug.h"
 
@@ -79,7 +79,7 @@ dri_fill_in_modes(struct dri_screen *screen,
    unsigned depth_buffer_factor;
    unsigned back_buffer_factor;
    unsigned msaa_samples_factor;
-   struct pipe_screen *p_screen = screen->pipe_screen;
+   struct pipe_screen *p_screen = screen->base.screen;
    boolean pf_r5g6b5, pf_a8r8g8b8, pf_x8r8g8b8;
    boolean pf_z16, pf_x8z24, pf_z24x8, pf_s8z24, pf_z24s8, pf_z32;
 
@@ -283,6 +283,31 @@ dri_get_swap_info(__DRIdrawable * dPriv, __DRIswapInfo * sInfo)
 
 #endif
 
+static boolean
+dri_get_egl_image(struct st_manager *smapi,
+                             struct st_egl_image *stimg)
+{
+   struct dri_context *ctx =
+      (struct dri_context *)stimg->stctxi->st_manager_private;
+   struct dri_screen *screen = dri_screen(ctx->sPriv);
+   __DRIimage *img = NULL;
+
+   if (screen->lookup_egl_image) {
+      img = screen->lookup_egl_image(ctx, stimg->egl_image);
+   }
+
+   if (!img)
+      return FALSE;
+
+   stimg->texture = NULL;
+   pipe_resource_reference(&stimg->texture, img->texture);
+   stimg->face = img->face;
+   stimg->level = img->level;
+   stimg->zslice = img->zslice;
+
+   return TRUE;
+}
+
 static void
 dri_destroy_option_cache(struct dri_screen * screen)
 {
@@ -304,11 +329,11 @@ dri_destroy_screen_helper(struct dri_screen * screen)
 {
    dri1_destroy_pipe_context(screen);
 
-   if (screen->smapi)
-      dri_destroy_st_manager(screen->smapi);
+   if (screen->st_api && screen->st_api->destroy)
+      screen->st_api->destroy(screen->st_api);
 
-   if (screen->pipe_screen)
-      screen->pipe_screen->destroy(screen->pipe_screen);
+   if (screen->base.screen)
+      screen->base.screen->destroy(screen->base.screen);
 
    dri_destroy_option_cache(screen);
 }
@@ -330,14 +355,16 @@ dri_init_screen_helper(struct dri_screen *screen,
                        struct pipe_screen *pscreen,
                        unsigned pixel_bits)
 {
-   screen->pipe_screen = pscreen;
-   if (!screen->pipe_screen) {
+   screen->base.screen = pscreen;
+   if (!screen->base.screen) {
       debug_printf("%s: failed to create pipe_screen\n", __FUNCTION__);
       return NULL;
    }
 
-   screen->smapi = dri_create_st_manager(screen);
-   if (!screen->smapi)
+   screen->base.get_egl_image = dri_get_egl_image;
+   screen->st_api = st_gl_api_create();
+
+   if (!screen->st_api)
       return NULL;
 
    driParseOptionInfo(&screen->optionCache,
index 8ab7d4391918784dcff22fd36d7719b67a35e9a6..1740fa8f426beef57a24b41a3bb25fcd72ca4160 100644 (file)
 #include "state_tracker/st_api.h"
 #include "state_tracker/drm_api.h"
 
+struct dri_context;
+struct dri_drawable;
+
 struct dri_screen
 {
+   /* st_api */
+   struct st_manager base;
+   struct st_api *st_api;
+
    /* dri */
    __DRIscreen *sPriv;
 
@@ -55,16 +62,21 @@ struct dri_screen
    int fd;
    drmLock *drmLock;
 
+   /* hooks filled in by dri1, dri2 & drisw */
+   __DRIimage * (*lookup_egl_image)(struct dri_context *ctx, void *handle);
+   void (*allocate_textures)(struct dri_drawable *drawable,
+                             const enum st_attachment_type *statts,
+                             unsigned count);
+   void (*update_drawable_info)(struct dri_drawable *drawable);
+   void (*flush_frontbuffer)(struct dri_drawable *drawable,
+                             enum st_attachment_type statt);
+
    /* gallium */
    struct drm_api *api;
-   struct pipe_winsys *pipe_winsys;
-   struct pipe_screen *pipe_screen;
    boolean d_depth_bits_last;
    boolean sd_depth_bits_last;
    boolean auto_fake_front;
 
-   struct st_manager *smapi;
-
    /* used only by DRI1 */
    struct pipe_context *dri1_pipe;
 };
@@ -76,6 +88,15 @@ dri_screen(__DRIscreen * sPriv)
    return (struct dri_screen *)sPriv->private;
 }
 
+struct __DRIimageRec {
+   struct pipe_resource *texture;
+   unsigned face;
+   unsigned level;
+   unsigned zslice;
+
+   void *loader_private;
+};
+
 #ifndef __NOT_HAVE_DRM_H
 
 static INLINE boolean
diff --git a/src/gallium/state_trackers/dri/common/dri_st_api.c b/src/gallium/state_trackers/dri/common/dri_st_api.c
deleted file mode 100644 (file)
index 261bae7..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- *    Chia-I Wu <olv@lunarg.com>
- */
-
-#include "util/u_memory.h"
-#include "util/u_inlines.h"
-#include "util/u_format.h"
-#include "util/u_debug.h"
-#include "state_tracker/st_manager.h" /* for st_manager_create_api */
-
-#include "dri_screen.h"
-#include "dri_context.h"
-#include "dri_drawable.h"
-#include "dri_st_api.h"
-#ifndef __NOT_HAVE_DRM_H
-#include "dri1.h"
-#include "dri2.h"
-#else
-#include "drisw.h"
-#endif
-
-static boolean
-dri_st_framebuffer_validate(struct st_framebuffer_iface *stfbi,
-                            const enum st_attachment_type *statts,
-                            unsigned count,
-                            struct pipe_resource **out)
-{
-   struct dri_drawable *drawable =
-      (struct dri_drawable *) stfbi->st_manager_private;
-   unsigned statt_mask, new_mask;
-   boolean new_stamp;
-   int i;
-
-   statt_mask = 0x0;
-   for (i = 0; i < count; i++)
-      statt_mask |= (1 << statts[i]);
-
-   /* record newly allocated textures */
-   new_mask = (statt_mask & ~drawable->texture_mask);
-
-   /*
-    * dPriv->pStamp is the server stamp.  It should be accessed with a lock, at
-    * least for DRI1.  dPriv->lastStamp is the client stamp.  It has the value
-    * of the server stamp when last checked.
-    */
-   new_stamp = (drawable->texture_stamp != drawable->dPriv->lastStamp);
-
-   if (new_stamp || new_mask) {
-
-#ifndef __NOT_HAVE_DRM_H
-      if (__dri1_api_hooks) {
-         dri1_allocate_textures(drawable, statt_mask);
-      }
-      else {
-         dri2_allocate_textures(drawable, statts, count);
-      }
-#else
-      if (new_stamp)
-         drisw_update_drawable_info(drawable);
-
-      drisw_allocate_textures(drawable, statt_mask);
-#endif
-
-      /* add existing textures */
-      for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
-         if (drawable->textures[i])
-            statt_mask |= (1 << i);
-      }
-
-      drawable->texture_stamp = drawable->dPriv->lastStamp;
-      drawable->texture_mask = statt_mask;
-   }
-
-   if (!out)
-      return TRUE;
-
-   for (i = 0; i < count; i++) {
-      out[i] = NULL;
-      pipe_resource_reference(&out[i], drawable->textures[statts[i]]);
-   }
-
-   return TRUE;
-}
-
-static boolean
-dri_st_framebuffer_flush_front(struct st_framebuffer_iface *stfbi,
-                               enum st_attachment_type statt)
-{
-   struct dri_drawable *drawable =
-      (struct dri_drawable *) stfbi->st_manager_private;
-
-#ifndef __NOT_HAVE_DRM_H
-   if (__dri1_api_hooks) {
-      dri1_flush_frontbuffer(drawable, statt);
-   }
-   else {
-      dri2_flush_frontbuffer(drawable, statt);
-   }
-#else
-   drisw_flush_frontbuffer(drawable, statt);
-#endif
-
-   return TRUE;
-}
-
-/**
- * Create a framebuffer from the given drawable.
- */
-struct st_framebuffer_iface *
-dri_create_st_framebuffer(struct dri_drawable *drawable)
-{
-   struct st_framebuffer_iface *stfbi;
-
-   stfbi = CALLOC_STRUCT(st_framebuffer_iface);
-   if (stfbi) {
-      stfbi->visual = &drawable->stvis;
-      stfbi->flush_front = dri_st_framebuffer_flush_front;
-      stfbi->validate = dri_st_framebuffer_validate;
-      stfbi->st_manager_private = (void *) drawable;
-   }
-
-   return stfbi;
-}
-
-/**
- * Destroy a framebuffer.
- */
-void
-dri_destroy_st_framebuffer(struct st_framebuffer_iface *stfbi)
-{
-   struct dri_drawable *drawable =
-      (struct dri_drawable *) stfbi->st_manager_private;
-   int i;
-
-   for (i = 0; i < ST_ATTACHMENT_COUNT; i++)
-      pipe_resource_reference(&drawable->textures[i], NULL);
-
-   FREE(stfbi);
-}
-
-/**
- * Validate the texture at an attachment.  Allocate the texture if it does not
- * exist.
- */
-void
-dri_st_framebuffer_validate_att(struct st_framebuffer_iface *stfbi,
-                                enum st_attachment_type statt)
-{
-   struct dri_drawable *drawable =
-      (struct dri_drawable *) stfbi->st_manager_private;
-   enum st_attachment_type statts[ST_ATTACHMENT_COUNT];
-   unsigned i, count = 0;
-
-   /* check if buffer already exists */
-   if (drawable->texture_mask & (1 << statt))
-      return;
-
-   /* make sure DRI2 does not destroy existing buffers */
-   for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
-      if (drawable->texture_mask & (1 << i)) {
-         statts[count++] = i;
-      }
-   }
-   statts[count++] = statt;
-
-   drawable->texture_stamp = drawable->dPriv->lastStamp - 1;
-
-   stfbi->validate(stfbi, statts, count, NULL);
-}
-
-/**
- * Reference counted st_api.
- */
-static struct {
-   int32_t refcnt;
-   struct st_api *stapi;
-} dri_st_api;
-
-/**
- * Add a reference to the st_api of the state tracker.
- */
-static void
-_dri_get_st_api(void)
-{
-   p_atomic_inc(&dri_st_api.refcnt);
-   if (p_atomic_read(&dri_st_api.refcnt) == 1)
-      dri_st_api.stapi = st_manager_create_api();
-}
-
-/**
- * Remove a reference to the st_api of the state tracker.
- */
-static void
-_dri_put_st_api(void)
-{
-   struct st_api *stapi = dri_st_api.stapi;
-
-   if (p_atomic_dec_zero(&dri_st_api.refcnt)) {
-      stapi->destroy(dri_st_api.stapi);
-      dri_st_api.stapi = NULL;
-   }
-}
-
-static boolean
-dri_st_manager_get_egl_image(struct st_manager *smapi,
-                             struct st_egl_image *stimg)
-{
-   __DRIimage *img = NULL;
-
-#ifndef __NOT_HAVE_DRM_H
-   if (!__dri1_api_hooks) {
-      struct dri_context *ctx = (struct dri_context *)
-         stimg->stctxi->st_manager_private;
-      img = dri2_lookup_egl_image(ctx, stimg->egl_image);
-   }
-#endif
-   if (!img)
-      return FALSE;
-
-   stimg->texture = NULL;
-   pipe_resource_reference(&stimg->texture, img->texture);
-   stimg->face = img->face;
-   stimg->level = img->level;
-   stimg->zslice = img->zslice;
-
-   return TRUE;
-}
-
-/**
- * Create a state tracker manager from the given screen.
- */
-struct st_manager *
-dri_create_st_manager(struct dri_screen *screen)
-{
-   struct st_manager *smapi;
-
-   smapi = CALLOC_STRUCT(st_manager);
-   if (smapi) {
-      smapi->screen = screen->pipe_screen;
-      smapi->get_egl_image = dri_st_manager_get_egl_image;
-      _dri_get_st_api();
-   }
-
-   return smapi;
-}
-
-/**
- * Destroy a state tracker manager.
- */
-void
-dri_destroy_st_manager(struct st_manager *smapi)
-{
-   _dri_put_st_api();
-   FREE(smapi);
-}
-
-/**
- * Return the st_api of OpenGL state tracker.
- */
-struct st_api *
-dri_get_st_api(void)
-{
-   assert(dri_st_api.stapi);
-   return dri_st_api.stapi;
-}
diff --git a/src/gallium/state_trackers/dri/common/dri_st_api.h b/src/gallium/state_trackers/dri/common/dri_st_api.h
deleted file mode 100644 (file)
index 11d86cf..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- *    Chia-I Wu <olv@lunarg.com>
- */
-
-#ifndef _DRI_ST_API_H_
-#define _DRI_ST_API_H_
-
-#include "state_tracker/st_api.h"
-
-struct dri_screen;
-struct dri_drawable;
-
-struct __DRIimageRec {
-   struct pipe_resource *texture;
-   unsigned face;
-   unsigned level;
-   unsigned zslice;
-
-   void *loader_private;
-};
-
-struct st_api *
-dri_get_st_api(void);
-
-struct st_manager *
-dri_create_st_manager(struct dri_screen *screen);
-
-void
-dri_destroy_st_manager(struct st_manager *smapi);
-
-struct st_framebuffer_iface *
-dri_create_st_framebuffer(struct dri_drawable *drawable);
-
-void
-dri_destroy_st_framebuffer(struct st_framebuffer_iface *stfbi);
-
-void
-dri_st_framebuffer_validate_att(struct st_framebuffer_iface *stfbi,
-                                enum st_attachment_type statt);
-
-#endif /* _DRI_ST_API_H_ */
index 7a236da0c0f599fc8f6313c817f644a8e2268a5e..d9a973e3c3ef5c35ed40803b7c5b170dc9c51e16 100644 (file)
@@ -16,7 +16,6 @@ C_SOURCES = \
        dri_context.c \
        dri_screen.c \
        dri_drawable.c \
-       dri_st_api.c \
        dri1_helper.c \
        dri1.c \
        dri2.c
index 1dfaa402f2d7d2775f6cccad3877808d7023cae5..8800b655343c1cf9966c46a21a935afc678227d7 100644 (file)
@@ -20,7 +20,6 @@ if env['dri']:
        source = [ 'dri_context.c',
                'dri_drawable.c',
                'dri_screen.c',
-               'dri_st_api.c',
                'dri1_helper.c',
                'dri1.c',
                'dri2.c',
index e216e46a87e6db478de3a3eba8125709d6a57900..23c21ed8398525a1aa539fd1abad9280521b023b 100644 (file)
@@ -104,13 +104,13 @@ dri1_propagate_drawable_change(struct dri_context *ctx)
    if (dPriv && draw->texture_stamp != dPriv->lastStamp) {
       ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
       flushed = TRUE;
-      ctx->st->notify_invalid_framebuffer(ctx->st, draw->stfb);
+      ctx->st->notify_invalid_framebuffer(ctx->st, &draw->base);
    }
 
    if (rPriv && dPriv != rPriv && read->texture_stamp != rPriv->lastStamp) {
       if (!flushed)
         ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
-      ctx->st->notify_invalid_framebuffer(ctx->st, read->stfb);
+      ctx->st->notify_invalid_framebuffer(ctx->st, &read->base);
    }
 }
 
@@ -253,13 +253,13 @@ dri1_copy_to_front(struct dri_context *ctx,
  * Backend functions for st_framebuffer interface and swap_buffers.
  */
 
-void
+static void
 dri1_flush_frontbuffer(struct dri_drawable *draw,
                        enum st_attachment_type statt)
 {
-   struct dri_context *ctx = dri_get_current();
+   struct dri_context *ctx = dri_get_current(draw->sPriv);
    struct dri_screen *screen = dri_screen(draw->sPriv);
-   struct pipe_screen *pipe_screen = screen->pipe_screen;
+   struct pipe_screen *pipe_screen = screen->base.screen;
    struct pipe_fence_handle *dummy_fence;
    struct pipe_resource *ptex;
 
@@ -280,10 +280,10 @@ dri1_flush_frontbuffer(struct dri_drawable *draw,
 void
 dri1_swap_buffers(__DRIdrawable * dPriv)
 {
-   struct dri_context *ctx = dri_get_current();
    struct dri_drawable *draw = dri_drawable(dPriv);
+   struct dri_context *ctx = dri_get_current(draw->sPriv);
    struct dri_screen *screen = dri_screen(draw->sPriv);
-   struct pipe_screen *pipe_screen = screen->pipe_screen;
+   struct pipe_screen *pipe_screen = screen->base.screen;
    struct pipe_fence_handle *fence;
    struct pipe_resource *ptex;
 
@@ -309,9 +309,9 @@ dri1_swap_buffers(__DRIdrawable * dPriv)
 void
 dri1_copy_sub_buffer(__DRIdrawable * dPriv, int x, int y, int w, int h)
 {
-   struct dri_context *ctx = dri_get_current();
+   struct dri_context *ctx = dri_get_current(dPriv->driScreenPriv);
    struct dri_screen *screen = dri_screen(dPriv->driScreenPriv);
-   struct pipe_screen *pipe_screen = screen->pipe_screen;
+   struct pipe_screen *pipe_screen = screen->base.screen;
    struct drm_clip_rect sub_bbox;
    struct dri_drawable *draw = dri_drawable(dPriv);
    struct pipe_fence_handle *dummy_fence;
@@ -342,9 +342,10 @@ dri1_copy_sub_buffer(__DRIdrawable * dPriv, int x, int y, int w, int h)
  * as they are requested. Unused attachments are not removed, not until the
  * framebuffer is resized or destroyed.
  */
-void
+static void
 dri1_allocate_textures(struct dri_drawable *drawable,
-                       unsigned mask)
+                       const enum st_attachment_type *statts,
+                       unsigned count)
 {
    struct dri_screen *screen = dri_screen(drawable->sPriv);
    struct pipe_resource templ;
@@ -371,40 +372,24 @@ dri1_allocate_textures(struct dri_drawable *drawable,
    templ.depth0 = 1;
    templ.last_level = 0;
 
-   for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
+   for (i = 0; i < count; i++) {
       enum pipe_format format;
-      unsigned tex_usage;
+      unsigned bind;
 
-      /* the texture already exists or not requested */
-      if (drawable->textures[i] || !(mask & (1 << i))) {
+      /* the texture already exists */
+      if (drawable->textures[statts[i]])
          continue;
-      }
 
-      switch (i) {
-      case ST_ATTACHMENT_FRONT_LEFT:
-      case ST_ATTACHMENT_BACK_LEFT:
-      case ST_ATTACHMENT_FRONT_RIGHT:
-      case ST_ATTACHMENT_BACK_RIGHT:
-         format = drawable->stvis.color_format;
-         tex_usage = PIPE_BIND_DISPLAY_TARGET |
-                     PIPE_BIND_RENDER_TARGET;
-         break;
-      case ST_ATTACHMENT_DEPTH_STENCIL:
-         format = drawable->stvis.depth_stencil_format;
-         tex_usage = PIPE_BIND_DEPTH_STENCIL;
-         break;
-      default:
-         format = PIPE_FORMAT_NONE;
-         break;
-      }
+      dri_drawable_get_format(drawable, statts[i], &format, &bind);
+
+      if (format == PIPE_FORMAT_NONE)
+         continue;
 
-      if (format != PIPE_FORMAT_NONE) {
-         templ.format = format;
-         templ.bind = tex_usage;
+      templ.format = format;
+      templ.bind = bind;
 
-         drawable->textures[i] =
-            screen->pipe_screen->resource_create(screen->pipe_screen, &templ);
-      }
+      drawable->textures[statts[i]] =
+         screen->base.screen->resource_create(screen->base.screen, &templ);
    }
 
    drawable->old_w = width;
@@ -489,6 +474,8 @@ dri1_init_screen(__DRIscreen * sPriv)
    screen->sPriv = sPriv;
    screen->fd = sPriv->fd;
    screen->drmLock = (drmLock *) & sPriv->pSAREA->lock;
+   screen->allocate_textures = dri1_allocate_textures;
+   screen->flush_frontbuffer = dri1_flush_frontbuffer;
 
    sPriv->private = (void *)screen;
    sPriv->extensions = dri1_screen_extensions;
index f7441f98abcc0338c7ea2f701dd390f3f7707348..a50188b3682706b0ff5411b7edfd2887e4789702 100644 (file)
@@ -43,14 +43,6 @@ extern struct dri1_api *__dri1_api_hooks;
 const __DRIconfig **
 dri1_init_screen(__DRIscreen * sPriv);
 
-void
-dri1_flush_frontbuffer(struct dri_drawable *drawable,
-                       enum st_attachment_type statt);
-
-void
-dri1_allocate_textures(struct dri_drawable *drawable,
-                       unsigned mask);
-
 void dri1_swap_buffers(__DRIdrawable * dPriv);
 
 void
index 0d15b5c9b85af88543bbf239efc5235a8370a81b..e1216f14c0e7718883e233d19f0bc2c1421a779e 100644 (file)
 #include "dri_screen.h"
 #include "dri_context.h"
 #include "dri_drawable.h"
-#include "dri_st_api.h"
 #include "dri2.h"
 
+#include "GL/internal/dri_interface.h"
+
 /**
  * DRI2 flush extension.
  */
@@ -59,7 +60,7 @@ dri2_invalidate_drawable(__DRIdrawable *dPriv)
    drawable->dPriv->lastStamp = *drawable->dPriv->pStamp;
 
    if (ctx)
-      ctx->st->notify_invalid_framebuffer(ctx->st, drawable->stfb);
+      ctx->st->notify_invalid_framebuffer(ctx->st, &drawable->base);
 }
 
 static const __DRI2flushExtension dri2FlushExtension = {
@@ -79,7 +80,7 @@ dri2_set_tex_buffer2(__DRIcontext *pDRICtx, GLint target,
    struct dri_drawable *drawable = dri_drawable(dPriv);
    struct pipe_resource *pt;
 
-   dri_st_framebuffer_validate_att(drawable->stfb, ST_ATTACHMENT_FRONT_LEFT);
+   dri_drawable_validate_att(drawable, ST_ATTACHMENT_FRONT_LEFT);
 
    pt = drawable->textures[ST_ATTACHMENT_FRONT_LEFT];
 
@@ -120,30 +121,31 @@ static const __DRItexBufferExtension dri2TexBufferExtension = {
 };
 
 /**
- * Get the format of an attachment.
+ * Get the format and binding of an attachment.
  */
-static INLINE enum pipe_format
+static INLINE void
 dri2_drawable_get_format(struct dri_drawable *drawable,
-                         enum st_attachment_type statt)
+                         enum st_attachment_type statt,
+                         enum pipe_format *format,
+                         unsigned *bind)
 {
-   enum pipe_format format;
-
    switch (statt) {
    case ST_ATTACHMENT_FRONT_LEFT:
    case ST_ATTACHMENT_BACK_LEFT:
    case ST_ATTACHMENT_FRONT_RIGHT:
    case ST_ATTACHMENT_BACK_RIGHT:
-      format = drawable->stvis.color_format;
+      *format = drawable->stvis.color_format;
+      *bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW;
       break;
    case ST_ATTACHMENT_DEPTH_STENCIL:
-      format = drawable->stvis.depth_stencil_format;
+      *format = drawable->stvis.depth_stencil_format;
+      *bind = PIPE_BIND_DEPTH_STENCIL; /* XXX sampler? */
       break;
    default:
-      format = PIPE_FORMAT_NONE;
+      *format = PIPE_FORMAT_NONE;
+      *bind = 0;
       break;
    }
-
-   return format;
 }
 
 
@@ -174,9 +176,10 @@ dri2_drawable_get_buffers(struct dri_drawable *drawable,
 
    for (i = 0; i < *count; i++) {
       enum pipe_format format;
+      unsigned bind;
       int att, bpp;
 
-      format = dri2_drawable_get_format(drawable, statts[i]);
+      dri2_drawable_get_format(drawable, statts[i], &format, &bind);
       if (format == PIPE_FORMAT_NONE)
          continue;
 
@@ -263,7 +266,7 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable,
    struct pipe_resource templ;
    struct winsys_handle whandle;
    boolean have_depth = FALSE;
-   unsigned i;
+   unsigned i, bind;
 
    if (drawable->old_num == count &&
        drawable->old_w == dri_drawable->w &&
@@ -275,7 +278,6 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable,
       pipe_resource_reference(&drawable->textures[i], NULL);
 
    memset(&templ, 0, sizeof(templ));
-   templ.bind = PIPE_BIND_RENDER_TARGET;
    templ.target = PIPE_TEXTURE_2D;
    templ.last_level = 0;
    templ.width0 = dri_drawable->w;
@@ -319,16 +321,17 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable,
          break;
       }
 
-      format = dri2_drawable_get_format(drawable, statt);
+      dri2_drawable_get_format(drawable, statt, &format, &bind);
       if (statt == ST_ATTACHMENT_INVALID || format == PIPE_FORMAT_NONE)
          continue;
 
       templ.format = format;
+      templ.bind = bind;
       whandle.handle = buf->name;
       whandle.stride = buf->pitch;
 
       drawable->textures[statt] =
-         screen->pipe_screen->resource_from_handle(screen->pipe_screen,
+         screen->base.screen->resource_from_handle(screen->base.screen,
                &templ, &whandle);
    }
 
@@ -342,7 +345,7 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable,
  * Backend functions for st_framebuffer interface.
  */
 
-void
+static void
 dri2_allocate_textures(struct dri_drawable *drawable,
                        const enum st_attachment_type *statts,
                        unsigned count)
@@ -354,7 +357,7 @@ dri2_allocate_textures(struct dri_drawable *drawable,
    dri2_drawable_process_buffers(drawable, buffers, num_buffers);
 }
 
-void
+static void
 dri2_flush_frontbuffer(struct dri_drawable *drawable,
                        enum st_attachment_type statt)
 {
@@ -369,7 +372,7 @@ dri2_flush_frontbuffer(struct dri_drawable *drawable,
    }
 }
 
-__DRIimage *
+static __DRIimage *
 dri2_lookup_egl_image(struct dri_context *ctx, void *handle)
 {
    __DRIimageLookupExtension *loader = ctx->sPriv->dri2.image;
@@ -431,7 +434,7 @@ dri2_create_image_from_name(__DRIcontext *context,
    whandle.handle = name;
    whandle.stride = pitch * util_format_get_blocksize(pf);
 
-   img->texture = screen->pipe_screen->resource_from_handle(screen->pipe_screen,
+   img->texture = screen->base.screen->resource_from_handle(screen->base.screen,
          &templ, &whandle);
    if (!img->texture) {
       FREE(img);
@@ -508,6 +511,9 @@ dri2_init_screen(__DRIscreen * sPriv)
    screen->api = drm_api_create();
    screen->sPriv = sPriv;
    screen->fd = sPriv->fd;
+   screen->lookup_egl_image = dri2_lookup_egl_image;
+   screen->allocate_textures = dri2_allocate_textures;
+   screen->flush_frontbuffer = dri2_flush_frontbuffer;
 
    sPriv->private = (void *)screen;
    sPriv->extensions = dri_screen_extensions;
index 5b28850000b70bd23d2cea57c511e5f959dae4a3..07adfe4f6c55d59ad5cda810f0381c2204f4a49a 100644 (file)
 const __DRIconfig **
 dri2_init_screen(__DRIscreen * sPriv);
 
-void
-dri2_flush_frontbuffer(struct dri_drawable *drawable,
-                       enum st_attachment_type statt);
-
-void
-dri2_allocate_textures(struct dri_drawable *drawable,
-                       const enum st_attachment_type *statts,
-                       unsigned count);
-
-__DRIimage *
-dri2_lookup_egl_image(struct dri_context *ctx, void *handle);
-
 #endif /* DRI2_H */
diff --git a/src/gallium/state_trackers/dri/drm/dri_st_api.c b/src/gallium/state_trackers/dri/drm/dri_st_api.c
deleted file mode 120000 (symlink)
index a8f6bd0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../common/dri_st_api.c
\ No newline at end of file
index 18d7aabd9f0ccc94154c36da70617f459d641f15..c0ae71451b2a666200d791cb4ebdf02ccac9bfa1 100644 (file)
@@ -19,7 +19,6 @@ C_SOURCES = \
        dri_context.c \
        dri_screen.c \
        dri_drawable.c \
-       dri_st_api.c \
        dri1_helper.c \
        drisw.c
 
index c97124c83106983f99d5eed9afcbd835f11b2559..6bb282d1a4cc4ebb961835aa47d3472dc97f57df 100644 (file)
@@ -20,7 +20,6 @@ if env['dri']:
        source = [ 'dri_context.c',
                'dri_drawable.c',
                'dri_screen.c',
-               'dri_st_api.c',
                'dri1_helper.c',
                'drisw.c',
                ]
diff --git a/src/gallium/state_trackers/dri/sw/dri_st_api.c b/src/gallium/state_trackers/dri/sw/dri_st_api.c
deleted file mode 120000 (symlink)
index a8f6bd0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../common/dri_st_api.c
\ No newline at end of file
index 9edddf01b57f8bf7b9c09ff632e97c88156448ea..dcf645593fb1f46e09f14bf476ed444484494278 100644 (file)
@@ -70,7 +70,7 @@ put_image(__DRIdrawable *dPriv, void *data, unsigned width, unsigned height)
                     data, dPriv->loaderPrivate);
 }
 
-void
+static void
 drisw_update_drawable_info(struct dri_drawable *drawable)
 {
    __DRIdrawable *dPriv = drawable->dPriv;
@@ -99,20 +99,20 @@ drisw_present_texture(__DRIdrawable *dPriv,
    if (!psurf)
       return;
 
-   screen->pipe_screen->flush_frontbuffer(screen->pipe_screen, psurf, drawable);
+   screen->base.screen->flush_frontbuffer(screen->base.screen, psurf, drawable);
 }
 
 static INLINE void
 drisw_invalidate_drawable(__DRIdrawable *dPriv)
 {
-   struct dri_context *ctx = dri_get_current();
+   struct dri_context *ctx = dri_get_current(dPriv->driScreenPriv);
    struct dri_drawable *drawable = dri_drawable(dPriv);
 
    drawable->texture_stamp = dPriv->lastStamp - 1;
 
    /* check if swapping currently bound buffer */
    if (ctx && ctx->dPriv == dPriv)
-      ctx->st->notify_invalid_framebuffer(ctx->st, drawable->stfb);
+      ctx->st->notify_invalid_framebuffer(ctx->st, &drawable->base);
 }
 
 static INLINE void
@@ -131,7 +131,7 @@ drisw_copy_to_front(__DRIdrawable * dPriv,
 void
 drisw_swap_buffers(__DRIdrawable *dPriv)
 {
-   struct dri_context *ctx = dri_get_current();
+   struct dri_context *ctx = dri_get_current(dPriv->driScreenPriv);
    struct dri_drawable *drawable = dri_drawable(dPriv);
    struct pipe_resource *ptex;
 
@@ -147,11 +147,11 @@ drisw_swap_buffers(__DRIdrawable *dPriv)
    }
 }
 
-void
+static void
 drisw_flush_frontbuffer(struct dri_drawable *drawable,
                         enum st_attachment_type statt)
 {
-   struct dri_context *ctx = dri_get_current();
+   struct dri_context *ctx = dri_get_current(drawable->sPriv);
    struct pipe_resource *ptex;
 
    if (!ctx)
@@ -175,9 +175,10 @@ drisw_flush_frontbuffer(struct dri_drawable *drawable,
  * seems a better seperation and safer for each DRI version to provide its own
  * function.
  */
-void
+static void
 drisw_allocate_textures(struct dri_drawable *drawable,
-                        unsigned mask)
+                        const enum st_attachment_type *statts,
+                        unsigned count)
 {
    struct dri_screen *screen = dri_screen(drawable->sPriv);
    struct pipe_resource templ;
@@ -206,38 +207,25 @@ drisw_allocate_textures(struct dri_drawable *drawable,
 
    for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
       enum pipe_format format;
-      unsigned tex_usage;
+      unsigned bind;
 
       /* the texture already exists or not requested */
-      if (drawable->textures[i] || !(mask & (1 << i))) {
+      if (drawable->textures[statts[i]])
          continue;
-      }
-
-      switch (i) {
-      case ST_ATTACHMENT_FRONT_LEFT:
-      case ST_ATTACHMENT_BACK_LEFT:
-      case ST_ATTACHMENT_FRONT_RIGHT:
-      case ST_ATTACHMENT_BACK_RIGHT:
-         format = drawable->stvis.color_format;
-         tex_usage = PIPE_BIND_DISPLAY_TARGET |
-                     PIPE_BIND_RENDER_TARGET;
-         break;
-      case ST_ATTACHMENT_DEPTH_STENCIL:
-         format = drawable->stvis.depth_stencil_format;
-         tex_usage = PIPE_BIND_DEPTH_STENCIL;
-         break;
-      default:
-         format = PIPE_FORMAT_NONE;
-         break;
-      }
-
-      if (format != PIPE_FORMAT_NONE) {
-         templ.format = format;
-         templ.bind = tex_usage;
-
-         drawable->textures[i] =
-            screen->pipe_screen->resource_create(screen->pipe_screen, &templ);
-      }
+
+      dri_drawable_get_format(drawable, statts[i], &format, &bind);
+
+      if (statts[i] != ST_ATTACHMENT_DEPTH_STENCIL)
+         bind |= PIPE_BIND_DISPLAY_TARGET;
+
+      if (format == PIPE_FORMAT_NONE)
+         continue;
+
+      templ.format = format;
+      templ.bind = bind;
+
+      drawable->textures[statts[i]] =
+         screen->base.screen->resource_create(screen->base.screen, &templ);
    }
 
    drawable->old_w = width;
@@ -270,6 +258,9 @@ drisw_init_screen(__DRIscreen * sPriv)
    screen->api = NULL; /* not needed */
    screen->sPriv = sPriv;
    screen->fd = -1;
+   screen->allocate_textures = drisw_allocate_textures;
+   screen->update_drawable_info = drisw_update_drawable_info;
+   screen->flush_frontbuffer = drisw_flush_frontbuffer;
 
    sPriv->private = (void *)screen;
    sPriv->extensions = drisw_screen_extensions;
index c0c874f7326a7229a902e8eb240253d3b0f60fa1..6c6c891f356c9f03dcb40f43d93dfd58cf66ce3f 100644 (file)
 const __DRIconfig **
 drisw_init_screen(__DRIscreen * sPriv);
 
-void
-drisw_update_drawable_info(struct dri_drawable *drawable);
-
-void
-drisw_flush_frontbuffer(struct dri_drawable *drawable,
-                        enum st_attachment_type statt);
-
-void
-drisw_allocate_textures(struct dri_drawable *drawable,
-                        unsigned mask);
-
 void drisw_swap_buffers(__DRIdrawable * dPriv);
 
 #endif /* DRISW_H */
index 57a479f6bcad9c68580fcba16eb891cec48ce255..97445478684f1e772fb63f0359c5d36042e3e4cd 100644 (file)
@@ -49,41 +49,39 @@ egl_g3d_st_manager(struct st_manager *smapi)
 struct st_api *
 egl_g3d_create_st_api(enum st_api_type api)
 {
-   const char *stmod_name;
    struct util_dl_library *lib;
-   const struct st_module *mod;
+   const char *proc_name;
+   struct st_api * (*proc)(void) = NULL;
 
    switch (api) {
    case ST_API_OPENGL:
-      stmod_name = ST_MODULE_OPENGL_SYMBOL;
+      proc_name = ST_CREATE_OPENGL_SYMBOL;
       break;
    case ST_API_OPENGL_ES1:
-      stmod_name = ST_MODULE_OPENGL_ES1_SYMBOL;
+      proc_name = ST_CREATE_OPENGL_ES1_SYMBOL;
       break;
    case ST_API_OPENGL_ES2:
-      stmod_name = ST_MODULE_OPENGL_ES2_SYMBOL;
+      proc_name = ST_CREATE_OPENGL_ES2_SYMBOL;
       break;
    case ST_API_OPENVG:
-      stmod_name = ST_MODULE_OPENVG_SYMBOL;
+      proc_name = ST_CREATE_OPENVG_SYMBOL;
       break;
    default:
-      stmod_name = NULL;
-      break;
-   }
-   if (!stmod_name)
+      assert(!"Unknown API Type\n");
       return NULL;
+   }
 
-   mod = NULL;
    lib = util_dl_open(NULL);
    if (lib) {
-      mod = (const struct st_module *)
-         util_dl_get_proc_address(lib, stmod_name);
+      proc = util_dl_get_proc_address(lib, proc_name);
+      debug_printf("%s: %s %p\n", __func__, proc_name, proc);
       util_dl_close(lib);
    }
-   if (!mod || mod->api != api)
+
+   if (!proc)
       return NULL;
 
-   return mod->create_api();
+   return proc();
 }
 
 static boolean
index 4e89e06b34cdd00a851a19ea1c9afff0bfdf1fb1..825fdac215041eba1716715c15ee875626a5c510 100644 (file)
@@ -1,8 +1,7 @@
-#include "state_tracker/st_manager.h"
+#include "state_tracker/st_gl_api.h"
 
-PUBLIC const int st_api_OpenGL_ES1 = 1;
-
-PUBLIC const struct st_module st_module_OpenGL_ES1 = {
-   .api = ST_API_OPENGL_ES1,
-   .create_api = st_manager_create_api
-};
+PUBLIC struct st_api *
+st_api_create_OpenGL_ES1()
+{
+   return st_gl_api_create();
+}
index 82e88b176ac2663c60e1aa601b8798a5c52d1733..5c773aaf93b1fe15bc1f73971e2035a92dac7b27 100644 (file)
@@ -1,8 +1,8 @@
-#include "state_tracker/st_manager.h"
+#include "state_tracker/st_gl_api.h"
 
-PUBLIC const int st_api_OpenGL_ES2 = 1;
-
-PUBLIC const struct st_module st_module_OpenGL_ES2 = {
-   .api = ST_API_OPENGL_ES2,
-   .create_api = st_manager_create_api
-};
+PUBLIC struct st_api *
+st_api_create_OpenGL_ES2()
+{
+   /* linker magic creates different versions */
+   return st_gl_api_create();
+}
index 294b593bf770a9bbd21697943f94cb24b56e6b9d..1c678b4f76054c548b4597481f6fe93238a69257 100644 (file)
@@ -125,7 +125,7 @@ xmesa_st_framebuffer_copy_textures(struct st_framebuffer_iface *stfbi,
 /**
  * Remove outdated textures and create the requested ones.
  */
-static void
+static boolean
 xmesa_st_framebuffer_validate_textures(struct st_framebuffer_iface *stfbi,
                                        unsigned width, unsigned height,
                                        unsigned mask)
@@ -183,12 +183,16 @@ xmesa_st_framebuffer_validate_textures(struct st_framebuffer_iface *stfbi,
 
          xstfb->textures[i] =
             xstfb->screen->resource_create(xstfb->screen, &templ);
+         if (!xstfb->textures[i])
+            return FALSE;
       }
    }
 
    xstfb->texture_width = width;
    xstfb->texture_height = height;
    xstfb->texture_mask = mask;
+
+   return TRUE;
 }
 
 static boolean 
@@ -200,6 +204,7 @@ xmesa_st_framebuffer_validate(struct st_framebuffer_iface *stfbi,
    struct xmesa_st_framebuffer *xstfb = xmesa_st_framebuffer(stfbi);
    unsigned statt_mask, new_mask, i;
    boolean resized;
+   boolean ret;
 
    statt_mask = 0x0;
    for (i = 0; i < count; i++)
@@ -212,8 +217,10 @@ xmesa_st_framebuffer_validate(struct st_framebuffer_iface *stfbi,
 
    /* revalidate textures */
    if (resized || new_mask) {
-      xmesa_st_framebuffer_validate_textures(stfbi,
-            xstfb->buffer->width, xstfb->buffer->height, statt_mask);
+      ret = xmesa_st_framebuffer_validate_textures(stfbi,
+                  xstfb->buffer->width, xstfb->buffer->height, statt_mask);
+      if (!ret)
+         return ret;
 
       if (!resized) {
          enum st_attachment_type back, front;
index e4226754d132b183948c339d2e596d8fec739d29..aecac28e7ee736bd9e99097f6813a4f2d712bc04 100644 (file)
@@ -546,26 +546,17 @@ vg_api_destroy(struct st_api *stapi)
    free(stapi);
 }
 
-static struct st_api *
-vg_module_create_api(void)
-{
-   struct st_api *stapi;
-
-   stapi = CALLOC_STRUCT(st_api);
-   if (stapi) {
-      stapi->destroy = vg_api_destroy;
-      stapi->get_proc_address = vg_api_get_proc_address;
-      stapi->is_visual_supported = vg_api_is_visual_supported;
-
-      stapi->create_context = vg_api_create_context;
-      stapi->make_current = vg_api_make_current;
-      stapi->get_current = vg_api_get_current;
-   }
+struct st_api st_vg_api = {
+   vg_api_destroy,
+   vg_api_get_proc_address,
+   vg_api_is_visual_supported,
+   vg_api_create_context,
+   vg_api_make_current,
+   vg_api_get_current,
+};
 
-   return stapi;
+struct st_api *
+st_api_create_OpenVG(void)
+{
+   return &st_vg_api;
 }
-
-PUBLIC const struct st_module st_module_OpenVG = {
-   .api = ST_API_OPENVG,
-   .create_api = vg_module_create_api,
-};
index f4ea61ed2c653a47ce4ca9dd74210fde4cfe0e4a..bcdd82e4f66e3f2934175deb214cfbfad995325b 100644 (file)
@@ -27,7 +27,7 @@
 
 #include "util/u_memory.h"
 #include "util/u_inlines.h"
-#include "state_tracker/st_manager.h" /* for st_manager_create_api */
+#include "state_tracker/st_gl_api.h" /* for st_gl_api_create */
 
 #include "stw_st.h"
 #include "stw_device.h"
@@ -308,5 +308,5 @@ stw_st_swap_framebuffer_locked(struct st_framebuffer_iface *stfb)
 struct st_api *
 stw_st_create_api(void)
 {
-   return st_manager_create_api();
+   return st_gl_api_create();
 }
index 8efbf4e828c68ce535b5c20467a027765abe0542..3cbaf615e2f7b299fb0e3ad87d3d25700fdf2566 100644 (file)
@@ -1,5 +1,14 @@
 # -*-makefile-*-
 
+ifeq ($(MESA_LLVM),1)
+DRIVER_DEFINES += -DGALLIUM_LLVMPIPE
+PIPE_DRIVERS += $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a
+LDFLAGS += $(LLVM_LDFLAGS)
+LD = g++
+DRIVER_EXTRAS = $(LLVM_LIBS)
+USE_CXX=1
+endif
+
 MESA_MODULES = \
        $(TOP)/src/mesa/libmesagallium.a \
        $(GALLIUM_AUXILIARIES)
@@ -69,7 +78,11 @@ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(PIPE_DRIVERS) Makefile \
                $(OBJECTS) $(PIPE_DRIVERS) \
                 -Wl,--start-group $(MESA_MODULES) -Wl,--end-group \
                  $(DRI_LIB_DEPS) $(DRIVER_EXTRAS)
-       $(CC) $(CFLAGS) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS)
+       if [ "x${USE_CXX}" == "x" ]; then \
+               $(CC) $(CFLAGS) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS); \
+       else \
+               $(CXX) $(CFLAGS) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS); \
+       fi
        @rm -f $@.test
        mv -f $@.tmp $@
 
index fcfd690e438d650f21d1da59ea463d088888fa79..3db9781c209023911f434ce88878481a64b4047c 100644 (file)
@@ -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 \
index e8d6d8069cc6a29980352367574507f3860857a2..84142be80c8c16878cd9d60c4d7b459b239b17f0 100644 (file)
@@ -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 *
index 48e5bdff4293387af85f97184747a50a2c9a0168..69b4ddd33f77eda52823f0abefb408959f2b5374 100644 (file)
 #include "state_tracker/xlib_sw_winsys.h"
 #include "xm_public.h"
 
-#include "state_tracker/st_manager.h"
+#include "state_tracker/st_gl_api.h"
 
-/* advertise OpenGL support */
-PUBLIC const int st_api_OpenGL = 1;
+/* piggy back on this libGL for OpenGL support in EGL */
+struct st_api *
+st_api_create_OpenGL()
+{
+   return st_gl_api_create();
+}
 
-PUBLIC const struct st_module st_module_OpenGL = {
-   .api = ST_API_OPENGL,
-   .create_api = st_manager_create_api
-};
 
 /* Helper function to choose and instantiate one of the software rasterizers:
  * cell, llvmpipe, softpipe.
@@ -151,7 +151,7 @@ fail:
 static struct xm_driver xlib_driver = 
 {
    .create_pipe_screen = swrast_xlib_create_screen,
-   .create_st_api = st_manager_create_api,
+   .create_st_api = st_gl_api_create,
 };
 
 
index 9a27da5e1a27b9dce6904a06bd9b00b26bfe144d..df175688861579fd04a74ff36f24096a4131ecb9 100644 (file)
@@ -27,7 +27,7 @@ i915_sw_buffer_create(struct i915_winsys *iws,
    buf->magic = 0xDEAD1337;
    buf->name = name;
    buf->type = type;
-   buf->ptr = calloc(size, 1);
+   buf->ptr = CALLOC(size, 1);
 
    if (!buf->ptr)
       goto err;
index 150ab19a33e3390334e5f83a1570d9cfb452bade..abf9aac5c012fa088c62505fa557bba07860cc95 100644 (file)
@@ -2,6 +2,8 @@ Import('*')
 
 env = env.Clone()
 
+env.ParseConfig('pkg-config --cflags libdrm')
+
 i965drm_sources = [
     'i965_drm_api.c',
     'i965_drm_buffer.c',
index fab42929514a08c2b23cc37ae49f0b5b39bcab4d..60e409fe10f01a588907ffcdefd23fc5f8d9eb36 100644 (file)
@@ -8,6 +8,7 @@ radeon_sources = [
     'radeon_r300.c',
 ]
 
+env.ParseConfig('pkg-config --cflags libdrm_radeon')
 env.Append(CPPPATH = '#/src/gallium/drivers/r300')
 
 radeonwinsys = env.ConvenienceLibrary(
index 8c22738004eff2c2df7d4b7a29d61a7e055442b0..8d981b22e3d5a46023d6a2f7af14cf3e549b5593 100644 (file)
@@ -100,8 +100,8 @@ static void do_ioctls(int fd, struct radeon_libdrm_winsys* winsys)
                            version->version_minor >= 1;
 #endif
 
-    /* XXX */
-    winsys->tex3d_mip_bug = TRUE;
+    winsys->drm_2_3_0 = version->version_major > 2 ||
+                        version->version_minor >= 3;
 
     info.request = RADEON_INFO_DEVICE_ID;
     retval = drmCommandWriteRead(fd, DRM_RADEON_INFO, &info, sizeof(info));
index 9824ada5b33135cbd3b02959bff91b32de60c1dc..b8366498922803844b3d895e23242e8caf5e1ee1 100644 (file)
@@ -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,
index 2fcf7cf98216acb14ef7e20a73121ebcb2f7aef4..80923de9373d23d7f2f13e42227debb0a3fe84d0 100644 (file)
@@ -201,6 +201,13 @@ static void radeon_write_cs_dword(struct r300_winsys_screen *rws,
     radeon_cs_write_dword(ws->cs, dword);
 }
 
+static void radeon_write_cs_table(struct r300_winsys_screen *rws,
+                                  const void *table, unsigned count)
+{
+    struct radeon_libdrm_winsys *ws = radeon_winsys_screen(rws);
+    radeon_cs_write_table(ws->cs, table, count);
+}
+
 static void radeon_write_cs_reloc(struct r300_winsys_screen *rws,
                                   struct r300_winsys_buffer *buf,
                                   uint32_t rd,
@@ -265,8 +272,8 @@ static uint32_t radeon_get_value(struct r300_winsys_screen *rws,
        return ws->z_pipes;
     case R300_VID_SQUARE_TILING_SUPPORT:
         return ws->squaretiling;
-    case R300_VID_TEX3D_MIP_BUG:
-        return ws->tex3d_mip_bug;
+    case R300_VID_DRM_2_3_0:
+        return ws->drm_2_3_0;
     }
     return 0;
 }
@@ -322,6 +329,7 @@ radeon_setup_winsys(int fd, struct radeon_libdrm_winsys* ws)
     ws->base.check_cs = radeon_check_cs;
     ws->base.begin_cs = radeon_begin_cs;
     ws->base.write_cs_dword = radeon_write_cs_dword;
+    ws->base.write_cs_table = radeon_write_cs_table;
     ws->base.write_cs_reloc = radeon_write_cs_reloc;
     ws->base.end_cs = radeon_end_cs;
     ws->base.flush_cs = radeon_flush_cs;
index 396f258c31204f8db1578855aebe5b1e826c5505..ca789be8e931fd869df1dff651553f4da99abc0d 100644 (file)
@@ -60,8 +60,12 @@ struct radeon_libdrm_winsys {
     /* Square tiling support. */
     boolean squaretiling;
 
-    /* Square tiling support. */
-    boolean tex3d_mip_bug;
+    /* DRM 2.3.0
+     *   - R500 VAP regs
+     *   - MSPOS regs
+     *   - Fixed texture 3D size calculation
+     */
+    boolean drm_2_3_0;
 
     /* DRM FD */
     int fd;
index 90ffc4868f7b429caa8cca34c3b2c25f3aba5987..104d03f27300c593016455231e6b9dc270b62d50 100644 (file)
@@ -114,6 +114,19 @@ vmw_svga_winsys_context(struct svga_winsys_context *swc)
 }
 
 
+static INLINE unsigned
+vmw_translate_to_pb_flags(unsigned flags)
+{
+   unsigned f = 0;
+   if (flags & SVGA_RELOC_READ)
+      f |= PB_USAGE_GPU_READ;
+
+   if (flags & SVGA_RELOC_WRITE)
+      f |= PB_USAGE_GPU_WRITE;
+
+   return f;
+}
+
 static enum pipe_error
 vmw_swc_flush(struct svga_winsys_context *swc,
               struct pipe_fence_handle **pfence)
@@ -264,6 +277,7 @@ vmw_swc_region_relocation(struct svga_winsys_context *swc,
 {
    struct vmw_svga_winsys_context *vswc = vmw_svga_winsys_context(swc);
    struct vmw_region_relocation *reloc;
+   unsigned translated_flags;
    enum pipe_error ret;
    
    assert(vswc->region.staged < vswc->region.reserved);
@@ -275,7 +289,8 @@ vmw_swc_region_relocation(struct svga_winsys_context *swc,
 
    ++vswc->region.staged;
 
-   ret = pb_validate_add_buffer(vswc->validate, reloc->buffer, flags);
+   translated_flags = vmw_translate_to_pb_flags(flags);
+   ret = pb_validate_add_buffer(vswc->validate, reloc->buffer, translated_flags);
    /* TODO: Update pipebuffer to reserve buffers and not fail here */
    assert(ret == PIPE_OK);
 
index ec4f919d08233508a6f9604f31b44991e4faacdd..56d2df825dfbf1e94901dbf91be8bb94a5e10bab 100644 (file)
@@ -48,6 +48,8 @@
 #include <sys/shm.h>
 #include <X11/extensions/XShm.h>
 
+DEBUG_GET_ONCE_BOOL_OPTION(xlib_no_shm, "XLIB_NO_SHM", FALSE)
+
 /**
  * Display target for Xlib winsys.
  * Low-level OS/window system memory buffer
@@ -122,6 +124,9 @@ static char *alloc_shm(struct xm_displaytarget *buf, unsigned size)
 {
    XShmSegmentInfo *const shminfo = & buf->shminfo;
 
+   shminfo->shmid = -1;
+   shminfo->shmaddr = (char *) -1;
+
    shminfo->shmid = shmget(IPC_PRIVATE, size, IPC_CREAT|0777);
    if (shminfo->shmid < 0) {
       return NULL;
@@ -383,15 +388,11 @@ xm_displaytarget_create(struct sw_winsys *winsys,
    xm_dt->stride = align(util_format_get_stride(format, width), alignment);
    size = xm_dt->stride * nblocksy;
 
-   if (!debug_get_bool_option("XLIB_NO_SHM", FALSE))
-   {
-      xm_dt->shminfo.shmid = -1;
-      xm_dt->shminfo.shmaddr = (char *) -1;
-      xm_dt->shm = TRUE;
-         
+   if (!debug_get_option_xlib_no_shm()) {
       xm_dt->data = alloc_shm(xm_dt, size);
-      if(!xm_dt->data)
-         goto no_data;
+      if (xm_dt->data) {
+         xm_dt->shm = TRUE;
+      }
    }
 
    if(!xm_dt->data) {
index 6711fdc61bb3753739a1361476c181b766d8327f..c6ebc49828bfa55eac47f488ed4512e91731a276 100644 (file)
@@ -90,7 +90,7 @@ install: $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
 
 # Remove .o and backup files
 clean:
-       -rm -f $(TOP)/$(LIB_DIR)/libGL.so*
+       -rm -f $(TOP)/$(LIB_DIR)/$(GL_LIB_GLOB)
        -rm -f *.o *~
        -rm -f depend depend.bak
 
index fdbdd43000e1e567c6acaba7e05bfd83cffa4a80..d0e88805bccc9d2db11bfa757a7d0f138a0cb00e 100644 (file)
@@ -36,7 +36,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 /* THIS IS NOT AN X CONSORTIUM STANDARD */
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 
 #define NEED_REPLIES
 #include <X11/Xlibint.h>
diff --git a/src/glx/apple/.gitignore b/src/glx/apple/.gitignore
new file mode 100644 (file)
index 0000000..3cc2d13
--- /dev/null
@@ -0,0 +1,4 @@
+apple_xgl_api.[hc]
+exports.list
+stage.[1234]
+
diff --git a/src/glx/apple/GL_aliases b/src/glx/apple/GL_aliases
new file mode 100644 (file)
index 0000000..8de2238
--- /dev/null
@@ -0,0 +1,10 @@
+#GL_EXT_texture_object
+alias AreTexturesResidentEXT AreTexturesResident
+alias BindTextureEXT BindTexture
+alias DeleteTexturesEXT DeleteTextures
+alias GenTexturesEXT GenTextures
+alias IsTextureEXT IsTexture
+alias PrioritizeTexturesEXT PrioritizeTextures
+
+# Due to type conflicts, we handle this differently
+#alias TexImage3DEXT TexImage3D
diff --git a/src/glx/apple/GL_extensions b/src/glx/apple/GL_extensions
new file mode 100644 (file)
index 0000000..073666c
--- /dev/null
@@ -0,0 +1,106 @@
+extension ARB_transpose_matrix
+extension ARB_vertex_program
+extension ARB_vertex_blend
+extension ARB_window_pos
+extension ARB_shader_objects
+extension ARB_vertex_shader
+extension ARB_shading_language_100
+extension ARB_imaging
+extension ARB_point_parameters
+extension ARB_texture_env_crossbar
+extension ARB_texture_border_clamp
+extension ARB_multitexture
+extension ARB_texture_env_add
+extension ARB_texture_cube_map
+extension ARB_texture_env_dot3
+extension ARB_multisample
+extension ARB_texture_env_combine
+extension ARB_texture_compression
+extension ARB_texture_mirrored_repeat
+extension ARB_shadow
+extension ARB_depth_texture
+extension ARB_shadow_ambient
+extension ARB_fragment_program
+extension ARB_fragment_program_shadow
+extension ARB_fragment_shader
+extension ARB_occlusion_query
+extension ARB_point_sprite
+extension ARB_texture_non_power_of_two
+extension ARB_vertex_buffer_object
+extension ARB_pixel_buffer_object
+extension ARB_draw_buffers
+extension ARB_shader_texture_lod
+extension ARB_texture_rectangle
+extension ARB_texture_float
+extension ARB_half_float_pixel
+
+extension EXT_multi_draw_arrays
+extension EXT_clip_volume_hint
+extension EXT_rescale_normal
+extension EXT_draw_range_elements
+extension EXT_fog_coord
+extension EXT_gpu_program_parameters
+extension EXT_geometry_shader4
+
+#The gl.spec has the wrong arguments for GetTransformFeedbackVaryingEXT
+#extension EXT_transform_feedback
+extension EXT_compiled_vertex_array
+extension EXT_framebuffer_object
+extension EXT_framebuffer_blit
+extension EXT_framebuffer_multisample
+extension EXT_texture_rectangle
+extension EXT_texture_env_add
+extension EXT_blend_color
+extension EXT_blend_minmax
+extension EXT_blend_subtract
+extension EXT_texture_lod_bias
+extension EXT_abgr
+extension EXT_bgra
+extension EXT_stencil_wrap
+extension EXT_texture_filter_anisotropic
+extension EXT_separate_specular_color
+extension EXT_secondary_color
+extension EXT_blend_func_separate
+extension EXT_shadow_funcs
+extension EXT_stencil_two_side
+extension EXT_texture_compression_s3tc
+extension EXT_texture_compression_dxt1
+extension EXT_texture_sRGB
+extension EXT_blend_equation_separate
+extension EXT_texture_mirror_clamp
+extension EXT_packed_depth_stencil
+
+extension APPLE_client_storage
+extension APPLE_specular_vector
+extension APPLE_transform_hint
+extension APPLE_packed_pixels
+#The gl.spec has different argument types for this:
+#extension APPLE_fence
+extension APPLE_vertex_array_object
+extension APPLE_vertex_program_evaluators
+extension APPLE_element_array
+extension APPLE_flush_render
+extension APPLE_aux_depth_stencil
+extension APPLE_flush_buffer_range
+extension APPLE_ycbcr_422
+#The gl.spec has different argument types for this:
+#extension APPLE_vertex_array_range
+extension APPLE_texture_range
+extension APPLE_float_pixels
+extension APPLE_pixel_buffer
+extension APPLE_object_purgeable
+
+#The OpenGL framework has moved this to the core OpenGL, and eliminated EXT_convolution listing.
+#extension EXT_convolution
+
+#Leopard supports these according to nm.
+#Applications should use the GL_EXTENSIONS list to determine capabilities.
+extension EXT_paletted_texture
+extension APPLE_fence
+extension NV_vertex_program4
+extension EXT_draw_buffers2
+extension EXT_gpu_shader4 
+extension ATI_pn_triangles
+extension NV_register_combiners
+extension EXT_depth_bounds_test
+
diff --git a/src/glx/apple/GL_noop b/src/glx/apple/GL_noop
new file mode 100644 (file)
index 0000000..2581be1
--- /dev/null
@@ -0,0 +1,15 @@
+#These are for compatibility with the old libGL.
+noop SGI_color_table
+noop EXT_convolution
+noop EXT_cull_vertex
+noop NV_fence
+noop SGIS_detail_texture
+noop SGIX_fragment_lighting
+noop SGIX_flush_raster
+noop EXT_vertex_array
+noop SGIX_instruments
+noop EXT_histogram
+noop NV_vertex_program
+noop PGI_misc_hints
+noop SGIS_multisample
+noop EXT_multisample
diff --git a/src/glx/apple/GL_promoted b/src/glx/apple/GL_promoted
new file mode 100644 (file)
index 0000000..a16dc6a
--- /dev/null
@@ -0,0 +1,4 @@
+promoted MESA_window_pos
+promoted ARB_window_pos
+promoted EXT_copy_texture
+promoted ARB_vertex_program
diff --git a/src/glx/apple/Makefile b/src/glx/apple/Makefile
new file mode 100644 (file)
index 0000000..279f7ad
--- /dev/null
@@ -0,0 +1,129 @@
+TOP = ../../..
+
+include $(TOP)/configs/current
+
+#CC=gcc
+#GL_CFLAGS=-Wall -ggdb3 -Os -DPTHREADS -D_REENTRANT $(RC_CFLAGS) $(CFLAGS)
+#GL_LDFLAGS=-L$(INSTALL_DIR)/lib -L$(X11_DIR)/lib $(LDFLAGS) -Wl,-single_module
+
+TCLSH=tclsh8.5
+MKDIR=mkdir
+INSTALL=install
+LN=ln
+RM=rm
+
+#INCLUDE=-I. -Iinclude -I.. -DGLX_ALIAS_UNSUPPORTED -I$(INSTALL_DIR)/include -I$(X11_DIR)/include
+
+#COMPILE=$(CC) $(INCLUDE) $(GL_CFLAGS) -c
+
+#The directory with the final binaries.
+BUILD_DIR=builds
+
+all: $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+
+SOURCES = \
+       apple_cgl.c \
+       apple_glx.c \
+       apple_glx_context.c \
+       apple_glx_drawable.c \
+       apple_glx_pbuffer.c \
+       apple_glx_pixmap.c \
+       apple_glx_surface.c \
+       apple_visual.c \
+       apple_xgl_api.c \
+       apple_xgl_api_additional.c \
+       apple_xgl_api_read.c \
+       apple_xgl_api_stereo.c \
+       apple_xgl_api_viewport.c \
+       appledri.c \
+       ../clientattrib.c \
+       ../compsize.c \
+       ../glcontextmodes.c \
+       glx_empty.c \
+       glx_error.c \
+       ../glx_pbuffer.c \
+       ../glx_query.c \
+       ../glxcmds.c \
+       ../glxcurrent.c \
+       ../glxext.c \
+       ../glxextensions.c \
+       glxreply.c \
+       ../pixel.c \
+       ../xfont.c
+
+include $(TOP)/src/mesa/sources.mak
+
+LDFLAGS += -lXplugin -framework ApplicationServices -framework CoreFoundation
+
+MESA_GLAPI_ASM_SOURCES = $(addprefix $(TOP)/src/mesa/, $(GLAPI_ASM_SOURCES))
+MESA_GLAPI_SOURCES = $(addprefix $(TOP)/src/mesa/, $(GLAPI_SOURCES))
+MESA_GLAPI_OBJECTS = $(addprefix $(TOP)/src/mesa/, $(GLAPI_OBJECTS))
+
+OBJECTS = $(SOURCES:.c=.o) # $(MESA_GLAPI_OBJECTS)
+
+INCLUDES = -I. -Iinclude -I..\
+       -I$(TOP)/include \
+       -I$(TOP)/include/GL/internal \
+       -I$(TOP)/src/mesa \
+       -I$(TOP)/src/mesa/glapi \
+       $(LIBDRM_CFLAGS) \
+       $(DRI2PROTO_CFLAGS) \
+       $(X11_INCLUDES)
+
+##### RULES #####
+
+$(OBJECTS) : apple_xgl_api.h
+
+apple_xgl_api.c : apple_xgl_api.h
+
+apple_xgl_api.h : gen_api_header.tcl  gen_api_library.tcl  gen_code.tcl  gen_defs.tcl  gen_exports.tcl  gen_funcs.tcl  gen_types.tcl
+       $(TCLSH) gen_code.tcl
+
+.c.o:
+       $(CC) -c $(INCLUDES) $(CFLAGS) $(EXTRA_DEFINES) $< -o $@
+
+.S.o:
+       $(CC) -c $(INCLUDES) $(CFLAGS) $(EXTRA_DEFINES)  $< -o $@
+
+##### TARGETS #####
+
+default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+
+# Make libGL
+$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME):  $(OBJECTS) Makefile
+       $(MKLIB) -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+               -major 1 -minor 2 $(MKLIB_OPTIONS) \
+               -install $(TOP)/$(LIB_DIR) -id $(INSTALL_LIB_DIR)/lib$(GL_LIB).1.dylib \
+               $(GL_LIB_DEPS) $(OBJECTS)
+
+depend: $(SOURCES) $(MESA_GLAPI_SOURCES) $(MESA_GLAPI_ASM_SOURCES) Makefile
+       rm -f depend
+       touch depend
+       $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(SOURCES) \
+               $(MESA_GLAPI_SOURCES) $(MESA_GLAPI_ASM_SOURCES) 
+
+# Emacs tags
+tags:
+       etags `find . -name \*.[ch]` `find $(TOP)/include`
+
+install_headers: include/GL/gl.h
+       $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GL
+       $(INSTALL) -m 644 include/GL/gl.h $(DESTDIR)$(INSTALL_DIR)/include/GL
+
+install_libraries: $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+       $(MAKE) -C $(TOP)/src/mesa install-libgl
+
+install: install_libraries
+
+# Remove .o and backup files
+clean:
+       -rm -f *.o *.a *~
+       -rm -f *.c~ *.h~
+       -rm -f apple_xgl_api.h apple_xgl_api.c
+       -rm -f *.dylib
+       -rm -f include/GL/gl.h
+       -rm -f $(TOP)/$(LIB_DIR)/$(GL_LIB_GLOB)
+       -rm -f *.o *~
+       -rm -f depend depend.bak
+
+-include depend
diff --git a/src/glx/apple/OVERALL_DESIGN b/src/glx/apple/OVERALL_DESIGN
new file mode 100644 (file)
index 0000000..c394b21
--- /dev/null
@@ -0,0 +1,18 @@
+A lot of the code is automatically generated.
+
+The following are generated based on specs/gl.spec and specs/enum.spec (from OpenGL.org):
+
+apple_xgl_api.h
+apple_xgl_api.c
+exports.list
+include/GL/gl.h 
+include/GL/glext.h (includes the OpenGL framework glext.h)
+
+The gen_code.tcl script is what executes the various gen_*.tcl scripts to produce those.
+
+You will need Tcl 8.5 for the gen_code.tcl script.
+
+The tests/ directory contains some tests that are built in testbuilds.
+
+The tests built in testbuilds don't require installation of the library.
+
diff --git a/src/glx/apple/README_UPDATING b/src/glx/apple/README_UPDATING
new file mode 100644 (file)
index 0000000..7b1bbe0
--- /dev/null
@@ -0,0 +1,8 @@
+The design of most of this code is such that we extend the GLX structures 
+with a void * named apple.
+
+The GLX functions that need to do Apple-specific things are passed 
+&s->apple in order to initialize the private structures.
+
+Thus when updating, just run a diff against glxext.c or glxcmds.c, and
+manually merge from there as needed.
diff --git a/src/glx/apple/RELEASE_NOTES b/src/glx/apple/RELEASE_NOTES
new file mode 100644 (file)
index 0000000..c5c603e
--- /dev/null
@@ -0,0 +1,71 @@
+AppleSGLX Release Notes
+
+o OpenGL Support
+
+AppleSGLX supports the same version of OpenGL as Leopard (OpenGL 2.1).
+Many extensions from the OpenGL framework are now builtin.
+
+This adds support for GLSL, and a variety of other features.
+
+o Thread Support
+
+Thread support has been improved since the libGL in XQuartz 2.3.2.1.
+
+o GLX 1.4 Support
+
+The GLX 1.3 and 1.4 functions should all work with a few exceptions
+as outlined in this document.
+
+o glXMakeContextCurrent (a GLX 1.3 feature)
+
+glXMakeContextCurrent should work with the readable drawable.  The
+OpenGL functions: glReadPixels, glCopyPixels, and glCopyColorTable, 
+should use the readable drawable if it's different than the rendering 
+drawable.
+
+o glXGetProcAddress (a GLX 1.4 feature and ARB extension)
+
+glXGetProcAddress should work and allow getting the address of any 
+extension functions you may need from the X11 libGL, or OpenGL framework
+libGL.  Previous versions of the X11 libGL didn't allow getting the newer 
+OpenGL framework addresses.
+
+o GLXPixmaps
+
+New support for GLXPixmaps works well with mixed X11 and OpenGL drawing
+operations.  You can create them using glXCreateGLXPixmap or
+glXCreatePixmap.
+
+o GLXPbuffers
+
+Support for GLXPbuffers has been added.  These are drawables that are
+not possible to render to with X11, which is allowed by the spec.
+A GLXPbuffer will never generate a clobber event, however 
+glXSelectEvent and glXGetSelectedEvent should operate normally.
+
+Clobber events are not generated due to low-level architectural
+differences.  The contents of your pbuffers will not be clobbered.
+
+o Shared Contexts
+
+Due to basic low-level architectural differences the usage of shared 
+contexts requires a similar visual or GLXFBConfig be used in the 
+creation of a shared context.  It's best if you specify the same
+visual.  This is due to a CGL design difference, and not something 
+that is easily worked around.  UPDATE: some changes made seem to
+help resolve this issue in many cases, so you may be able to use a
+shared context without this restriction.
+
+
+o Indirect
+
+The X server supports indirect fairly well, so OpenGL applications
+can be run remotely and displayed by XQuartz.  This means you can run
+applications from a remote host on an XQuartz X server.
+
+AppleSGLX does not support indirect rendering.  Any indirect context
+created will appear to glXIsDirect as an indirect context, but it
+does not actually support indirect rendering to a remote X server.
+
+AppleSGLX supports GLXPixmaps and GLXPbuffers with direct and indirect
+contexts, though they are all direct contexts by definition (see above).
diff --git a/src/glx/apple/TODO b/src/glx/apple/TODO
new file mode 100644 (file)
index 0000000..4a063fe
--- /dev/null
@@ -0,0 +1,26 @@
+Test shared contexts!
+
+Go over every glxcmd in glxcmds.c and make sure we have them working.
+Verify the XError behavior of GLXPixmap support functions.
+
+Test GLXPixmap support with various pixmap depths.
+Test GLXPixmap support with invalid pixmaps (to stress the protocol code).
+
+-- Feb 10, 2009
+
+Test glXCopyContext.
+
+-- Dec 12 2008
+TEST glXCopyContext needs some work and additional code in apple_glx.c.
+
+----
+
+Make sure we report the proper list of GLX extensions available.  Apple direct may not support some 
+that Mesa does, and vice-versa.
+
+Modify create_destroy_context and create a new test called create_destroy_context_thread_race.  
+Where 2 threads are doing the same sort of path of create and destroy.  The locking should protect 
+us there, but we need to verify nothing goes wrong.
+
diff --git a/src/glx/apple/apple_cgl.c b/src/glx/apple/apple_cgl.c
new file mode 100644 (file)
index 0000000..737d757
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ Copyright (c) 2008 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <dlfcn.h>
+
+#include "apple_cgl.h"
+#include "apple_glx.h"
+
+#ifndef OPENGL_FRAMEWORK_PATH
+#define OPENGL_FRAMEWORK_PATH "/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL"
+#endif
+
+static void *dl_handle = NULL;
+
+struct apple_cgl_api apple_cgl;
+
+static bool initialized = false;
+
+static void *
+sym(void *h, const char *name)
+{
+   void *s;
+
+   s = dlsym(h, name);
+
+   if (NULL == s) {
+      fprintf(stderr, "error: %s\n", dlerror());
+      abort();
+   }
+
+   return s;
+}
+
+void
+apple_cgl_init(void)
+{
+   void *h;
+   GLint major = 0, minor = 0;
+   const char *opengl_framework_path;
+
+   if (initialized)
+      return;
+
+   opengl_framework_path = getenv("OPENGL_FRAMEWORK_PATH");
+   if (!opengl_framework_path) {
+      opengl_framework_path = OPENGL_FRAMEWORK_PATH;
+   }
+
+   (void) dlerror();            /*drain dlerror */
+   h = dlopen(opengl_framework_path, RTLD_NOW);
+
+   if (NULL == h) {
+      fprintf(stderr, "error: unable to dlopen %s : %s\n",
+              opengl_framework_path, dlerror());
+      abort();
+   }
+
+   dl_handle = h;
+
+   apple_cgl.get_version = sym(h, "CGLGetVersion");
+
+   apple_cgl.get_version(&major, &minor);
+
+   apple_glx_diagnostic("CGL major %d minor %d\n", major, minor);
+
+   if (1 != major) {
+      fprintf(stderr, "WARNING: the CGL major version has changed!\n"
+              "libGL may be incompatible!\n");
+   }
+
+   apple_cgl.choose_pixel_format = sym(h, "CGLChoosePixelFormat");
+   apple_cgl.destroy_pixel_format = sym(h, "CGLDestroyPixelFormat");
+
+   apple_cgl.clear_drawable = sym(h, "CGLClearDrawable");
+   apple_cgl.flush_drawable = sym(h, "CGLFlushDrawable");
+
+   apple_cgl.create_context = sym(h, "CGLCreateContext");
+   apple_cgl.destroy_context = sym(h, "CGLDestroyContext");
+
+   apple_cgl.set_current_context = sym(h, "CGLSetCurrentContext");
+   apple_cgl.get_current_context = sym(h, "CGLGetCurrentContext");
+   apple_cgl.error_string = sym(h, "CGLErrorString");
+
+   apple_cgl.set_off_screen = sym(h, "CGLSetOffScreen");
+
+   apple_cgl.copy_context = sym(h, "CGLCopyContext");
+
+   apple_cgl.create_pbuffer = sym(h, "CGLCreatePBuffer");
+   apple_cgl.destroy_pbuffer = sym(h, "CGLDestroyPBuffer");
+   apple_cgl.set_pbuffer = sym(h, "CGLSetPBuffer");
+
+   initialized = true;
+}
+
+void *
+apple_cgl_get_dl_handle(void)
+{
+   return dl_handle;
+}
diff --git a/src/glx/apple/apple_cgl.h b/src/glx/apple/apple_cgl.h
new file mode 100644 (file)
index 0000000..5e98a00
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#ifndef APPLE_CGL_H
+#define APPLE_CGL_H
+
+#include <stdio.h>
+#include <OpenGL/CGLCurrent.h>
+#include <OpenGL/CGLTypes.h>
+#include <OpenGL/OpenGL.h>
+
+/* For GLint and GLsizei on Tiger */
+#include <OpenGL/gl.h>
+
+struct apple_cgl_api
+{
+   void (*get_version) (GLint * majorvers, GLint * minorvers);
+
+     CGLError(*choose_pixel_format) (const CGLPixelFormatAttribute * attribs,
+                                     CGLPixelFormatObj * pix, GLint * npix);
+     CGLError(*destroy_pixel_format) (CGLPixelFormatObj pix);
+
+     CGLError(*clear_drawable) (CGLContextObj ctx);
+     CGLError(*flush_drawable) (CGLContextObj ctx);
+
+     CGLError(*create_context) (CGLPixelFormatObj pix, CGLContextObj share,
+                                CGLContextObj * ctx);
+     CGLError(*destroy_context) (CGLContextObj pix);
+
+     CGLError(*set_current_context) (CGLContextObj ctx);
+     CGLContextObj(*get_current_context) (void);
+   const char *(*error_string) (CGLError error);
+
+     CGLError(*set_off_screen) (CGLContextObj ctx,
+                                GLsizei width, GLsizei height, GLint rowbytes,
+                                void *baseaddr);
+
+     CGLError(*copy_context) (CGLContextObj src, CGLContextObj dst,
+                              GLbitfield mask);
+
+     CGLError(*create_pbuffer) (GLsizei width,
+                                GLsizei height,
+                                GLenum target,
+                                GLenum internalFormat,
+                                GLint max_level, CGLPBufferObj * pbuffer);
+
+     CGLError(*destroy_pbuffer) (CGLPBufferObj pbuffer);
+
+     CGLError(*set_pbuffer) (CGLContextObj ctx,
+                             CGLPBufferObj pbuffer,
+                             GLenum face, GLint level, GLint screen);
+};
+
+extern struct apple_cgl_api apple_cgl;
+
+extern void apple_cgl_init(void);
+
+extern void *apple_cgl_get_dl_handle(void);
+
+#endif
diff --git a/src/glx/apple/apple_exports.list b/src/glx/apple/apple_exports.list
new file mode 100644 (file)
index 0000000..f479011
--- /dev/null
@@ -0,0 +1,623 @@
+_glAccum
+_glAlphaFunc
+_glAreTexturesResident
+_glArrayElement
+_glBegin
+_glBindTexture
+_glBitmap
+_glBlendColor
+_glBlendEquation
+_glBlendEquationSeparate
+_glBlendFunc
+_glCallList
+_glCallLists
+_glClear
+_glClearAccum
+_glClearColor
+_glClearDepth
+_glClearIndex
+_glClearStencil
+_glClipPlane
+_glColor3b
+_glColor3bv
+_glColor3d
+_glColor3dv
+_glColor3f
+_glColor3fv
+_glColor3i
+_glColor3iv
+_glColor3s
+_glColor3sv
+_glColor3ub
+_glColor3ubv
+_glColor3ui
+_glColor3uiv
+_glColor3us
+_glColor3usv
+_glColor4b
+_glColor4bv
+_glColor4d
+_glColor4dv
+_glColor4f
+_glColor4fv
+_glColor4i
+_glColor4iv
+_glColor4s
+_glColor4sv
+_glColor4ub
+_glColor4ubv
+_glColor4ui
+_glColor4uiv
+_glColor4us
+_glColor4usv
+_glColorMask
+_glColorMaterial
+_glColorPointer
+_glColorSubTable
+_glColorTable
+_glColorTableParameterfv
+_glColorTableParameteriv
+_glConvolutionFilter1D
+_glConvolutionFilter2D
+_glConvolutionParameterf
+_glConvolutionParameterfv
+_glConvolutionParameteri
+_glConvolutionParameteriv
+_glCopyColorSubTable
+_glCopyColorTable
+_glCopyConvolutionFilter1D
+_glCopyConvolutionFilter2D
+_glCopyPixels
+_glCopyTexImage1D
+_glCopyTexImage2D
+_glCopyTexSubImage1D
+_glCopyTexSubImage2D
+_glCopyTexSubImage3D
+_glCullFace
+_glDeleteLists
+_glDeleteTextures
+_glDepthFunc
+_glDepthMask
+_glDepthRange
+_glDisable
+_glDisableClientState
+_glDrawArrays
+_glDrawBuffer
+_glDrawElements
+_glDrawPixels
+_glDrawRangeElements
+_glEdgeFlag
+_glEdgeFlagPointer
+_glEdgeFlagv
+_glEnable
+_glEnableClientState
+_glEnd
+_glEndList
+_glEvalCoord1d
+_glEvalCoord1dv
+_glEvalCoord1f
+_glEvalCoord1fv
+_glEvalCoord2d
+_glEvalCoord2dv
+_glEvalCoord2f
+_glEvalCoord2fv
+_glEvalMesh1
+_glEvalMesh2
+_glEvalPoint1
+_glEvalPoint2
+_glFeedbackBuffer
+_glFinish
+_glFlush
+_glFogf
+_glFogfv
+_glFogi
+_glFogiv
+_glFrontFace
+_glFrustum
+_glGenLists
+_glGenTextures
+_glGetBooleanv
+_glGetClipPlane
+_glGetColorTable
+_glGetColorTableParameterfv
+_glGetColorTableParameteriv
+_glGetConvolutionFilter
+_glGetConvolutionParameterfv
+_glGetConvolutionParameteriv
+_glGetDoublev
+_glGetError
+_glGetFloatv
+_glGetHistogram
+_glGetHistogramParameterfv
+_glGetHistogramParameteriv
+_glGetIntegerv
+_glGetLightfv
+_glGetLightiv
+_glGetMapdv
+_glGetMapfv
+_glGetMapiv
+_glGetMaterialfv
+_glGetMaterialiv
+_glGetMinmax
+_glGetMinmaxParameterfv
+_glGetMinmaxParameteriv
+_glGetPixelMapfv
+_glGetPixelMapuiv
+_glGetPixelMapusv
+_glGetPointerv
+_glGetPolygonStipple
+_glGetSeparableFilter
+_glGetString
+_glGetTexEnvfv
+_glGetTexEnviv
+_glGetTexGendv
+_glGetTexGenfv
+_glGetTexGeniv
+_glGetTexImage
+_glGetTexLevelParameterfv
+_glGetTexLevelParameteriv
+_glGetTexParameterfv
+_glGetTexParameteriv
+_glHint
+_glHistogram
+_glIndexMask
+_glIndexPointer
+_glIndexd
+_glIndexdv
+_glIndexf
+_glIndexfv
+_glIndexi
+_glIndexiv
+_glIndexs
+_glIndexsv
+_glIndexub
+_glIndexubv
+_glInitNames
+_glInterleavedArrays
+_glIsEnabled
+_glIsList
+_glIsTexture
+_glLightModelf
+_glLightModelfv
+_glLightModeli
+_glLightModeliv
+_glLightf
+_glLightfv
+_glLighti
+_glLightiv
+_glLineStipple
+_glLineWidth
+_glListBase
+_glLoadIdentity
+_glLoadMatrixd
+_glLoadMatrixf
+_glLoadName
+_glLogicOp
+_glMap1d
+_glMap1f
+_glMap2d
+_glMap2f
+_glMapGrid1d
+_glMapGrid1f
+_glMapGrid2d
+_glMapGrid2f
+_glMaterialf
+_glMaterialfv
+_glMateriali
+_glMaterialiv
+_glMatrixMode
+_glMinmax
+_glMultMatrixd
+_glMultMatrixf
+_glNewList
+_glNormal3b
+_glNormal3bv
+_glNormal3d
+_glNormal3dv
+_glNormal3f
+_glNormal3fv
+_glNormal3i
+_glNormal3iv
+_glNormal3s
+_glNormal3sv
+_glNormalPointer
+_glOrtho
+_glPassThrough
+_glPixelMapfv
+_glPixelMapuiv
+_glPixelMapusv
+_glPixelStoref
+_glPixelStorei
+_glPixelTransferf
+_glPixelTransferi
+_glPixelZoom
+_glPointSize
+_glPolygonMode
+_glPolygonOffset
+_glPolygonStipple
+_glPopAttrib
+_glPopClientAttrib
+_glPopMatrix
+_glPopName
+_glPrioritizeTextures
+_glPushAttrib
+_glPushClientAttrib
+_glPushMatrix
+_glPushName
+_glRasterPos2d
+_glRasterPos2dv
+_glRasterPos2f
+_glRasterPos2fv
+_glRasterPos2i
+_glRasterPos2iv
+_glRasterPos2s
+_glRasterPos2sv
+_glRasterPos3d
+_glRasterPos3dv
+_glRasterPos3f
+_glRasterPos3fv
+_glRasterPos3i
+_glRasterPos3iv
+_glRasterPos3s
+_glRasterPos3sv
+_glRasterPos4d
+_glRasterPos4dv
+_glRasterPos4f
+_glRasterPos4fv
+_glRasterPos4i
+_glRasterPos4iv
+_glRasterPos4s
+_glRasterPos4sv
+_glReadBuffer
+_glReadPixels
+_glRectd
+_glRectdv
+_glRectf
+_glRectfv
+_glRecti
+_glRectiv
+_glRects
+_glRectsv
+_glRenderMode
+_glResetHistogram
+_glResetMinmax
+_glRotated
+_glRotatef
+_glScaled
+_glScalef
+_glScissor
+_glSelectBuffer
+_glSeparableFilter2D
+_glShadeModel
+_glStencilFunc
+_glStencilMask
+_glStencilOp
+_glTexCoord1d
+_glTexCoord1dv
+_glTexCoord1f
+_glTexCoord1fv
+_glTexCoord1i
+_glTexCoord1iv
+_glTexCoord1s
+_glTexCoord1sv
+_glTexCoord2d
+_glTexCoord2dv
+_glTexCoord2f
+_glTexCoord2fv
+_glTexCoord2i
+_glTexCoord2iv
+_glTexCoord2s
+_glTexCoord2sv
+_glTexCoord3d
+_glTexCoord3dv
+_glTexCoord3f
+_glTexCoord3fv
+_glTexCoord3i
+_glTexCoord3iv
+_glTexCoord3s
+_glTexCoord3sv
+_glTexCoord4d
+_glTexCoord4dv
+_glTexCoord4f
+_glTexCoord4fv
+_glTexCoord4i
+_glTexCoord4iv
+_glTexCoord4s
+_glTexCoord4sv
+_glTexCoordPointer
+_glTexEnvf
+_glTexEnvfv
+_glTexEnvi
+_glTexEnviv
+_glTexGend
+_glTexGendv
+_glTexGenf
+_glTexGenfv
+_glTexGeni
+_glTexGeniv
+_glTexImage1D
+_glTexImage2D
+_glTexImage3D
+_glTexParameterf
+_glTexParameterfv
+_glTexParameteri
+_glTexParameteriv
+_glTexSubImage1D
+_glTexSubImage2D
+_glTexSubImage3D
+_glTranslated
+_glTranslatef
+_glVertex2d
+_glVertex2dv
+_glVertex2f
+_glVertex2fv
+_glVertex2i
+_glVertex2iv
+_glVertex2s
+_glVertex2sv
+_glVertex3d
+_glVertex3dv
+_glVertex3f
+_glVertex3fv
+_glVertex3i
+_glVertex3iv
+_glVertex3s
+_glVertex3sv
+_glVertex4d
+_glVertex4dv
+_glVertex4f
+_glVertex4fv
+_glVertex4i
+_glVertex4iv
+_glVertex4s
+_glVertex4sv
+_glVertexPointer
+_glViewport
+_glSampleCoverage
+_glSamplePass
+_glLoadTransposeMatrixf
+_glLoadTransposeMatrixd
+_glMultTransposeMatrixf
+_glMultTransposeMatrixd
+_glCompressedTexImage3D
+_glCompressedTexImage2D
+_glCompressedTexImage1D
+_glCompressedTexSubImage3D
+_glCompressedTexSubImage2D
+_glCompressedTexSubImage1D
+_glGetCompressedTexImage
+_glActiveTexture
+_glClientActiveTexture
+_glMultiTexCoord1d
+_glMultiTexCoord1dv
+_glMultiTexCoord1f
+_glMultiTexCoord1fv
+_glMultiTexCoord1i
+_glMultiTexCoord1iv
+_glMultiTexCoord1s
+_glMultiTexCoord1sv
+_glMultiTexCoord2d
+_glMultiTexCoord2dv
+_glMultiTexCoord2f
+_glMultiTexCoord2fv
+_glMultiTexCoord2i
+_glMultiTexCoord2iv
+_glMultiTexCoord2s
+_glMultiTexCoord2sv
+_glMultiTexCoord3d
+_glMultiTexCoord3dv
+_glMultiTexCoord3f
+_glMultiTexCoord3fv
+_glMultiTexCoord3i
+_glMultiTexCoord3iv
+_glMultiTexCoord3s
+_glMultiTexCoord3sv
+_glMultiTexCoord4d
+_glMultiTexCoord4dv
+_glMultiTexCoord4f
+_glMultiTexCoord4fv
+_glMultiTexCoord4i
+_glMultiTexCoord4iv
+_glMultiTexCoord4s
+_glMultiTexCoord4sv
+_glFogCoordf
+_glFogCoordfv
+_glFogCoordd
+_glFogCoorddv
+_glFogCoordPointer
+_glSecondaryColor3b
+_glSecondaryColor3bv
+_glSecondaryColor3d
+_glSecondaryColor3dv
+_glSecondaryColor3f
+_glSecondaryColor3fv
+_glSecondaryColor3i
+_glSecondaryColor3iv
+_glSecondaryColor3s
+_glSecondaryColor3sv
+_glSecondaryColor3ub
+_glSecondaryColor3ubv
+_glSecondaryColor3ui
+_glSecondaryColor3uiv
+_glSecondaryColor3us
+_glSecondaryColor3usv
+_glSecondaryColorPointer
+_glPointParameterf
+_glPointParameterfv
+_glPointParameteri
+_glPointParameteriv
+_glBlendFuncSeparate
+_glMultiDrawArrays
+_glMultiDrawElements
+_glWindowPos2d
+_glWindowPos2dv
+_glWindowPos2f
+_glWindowPos2fv
+_glWindowPos2i
+_glWindowPos2iv
+_glWindowPos2s
+_glWindowPos2sv
+_glWindowPos3d
+_glWindowPos3dv
+_glWindowPos3f
+_glWindowPos3fv
+_glWindowPos3i
+_glWindowPos3iv
+_glWindowPos3s
+_glWindowPos3sv
+_glGenQueries
+_glDeleteQueries
+_glIsQuery
+_glBeginQuery
+_glEndQuery
+_glGetQueryiv
+_glGetQueryObjectiv
+_glGetQueryObjectuiv
+_glBindBuffer
+_glDeleteBuffers
+_glGenBuffers
+_glIsBuffer
+_glBufferData
+_glBufferSubData
+_glGetBufferSubData
+_glMapBuffer
+_glUnmapBuffer
+_glGetBufferParameteriv
+_glGetBufferPointerv
+_glDrawBuffers
+_glVertexAttrib1d
+_glVertexAttrib1dv
+_glVertexAttrib1f
+_glVertexAttrib1fv
+_glVertexAttrib1s
+_glVertexAttrib1sv
+_glVertexAttrib2d
+_glVertexAttrib2dv
+_glVertexAttrib2f
+_glVertexAttrib2fv
+_glVertexAttrib2s
+_glVertexAttrib2sv
+_glVertexAttrib3d
+_glVertexAttrib3dv
+_glVertexAttrib3f
+_glVertexAttrib3fv
+_glVertexAttrib3s
+_glVertexAttrib3sv
+_glVertexAttrib4Nbv
+_glVertexAttrib4Niv
+_glVertexAttrib4Nsv
+_glVertexAttrib4Nub
+_glVertexAttrib4Nubv
+_glVertexAttrib4Nuiv
+_glVertexAttrib4Nusv
+_glVertexAttrib4bv
+_glVertexAttrib4d
+_glVertexAttrib4dv
+_glVertexAttrib4f
+_glVertexAttrib4fv
+_glVertexAttrib4iv
+_glVertexAttrib4s
+_glVertexAttrib4sv
+_glVertexAttrib4ubv
+_glVertexAttrib4uiv
+_glVertexAttrib4usv
+_glVertexAttribPointer
+_glEnableVertexAttribArray
+_glDisableVertexAttribArray
+_glGetVertexAttribdv
+_glGetVertexAttribfv
+_glGetVertexAttribiv
+_glGetVertexAttribPointerv
+_glDeleteShader
+_glDetachShader
+_glCreateShader
+_glShaderSource
+_glCompileShader
+_glCreateProgram
+_glAttachShader
+_glLinkProgram
+_glUseProgram
+_glDeleteProgram
+_glValidateProgram
+_glUniform1f
+_glUniform2f
+_glUniform3f
+_glUniform4f
+_glUniform1i
+_glUniform2i
+_glUniform3i
+_glUniform4i
+_glUniform1fv
+_glUniform2fv
+_glUniform3fv
+_glUniform4fv
+_glUniform1iv
+_glUniform2iv
+_glUniform3iv
+_glUniform4iv
+_glUniformMatrix2fv
+_glUniformMatrix3fv
+_glUniformMatrix4fv
+_glIsShader
+_glIsProgram
+_glGetShaderiv
+_glGetProgramiv
+_glGetAttachedShaders
+_glGetShaderInfoLog
+_glGetProgramInfoLog
+_glGetUniformLocation
+_glGetActiveUniform
+_glGetUniformfv
+_glGetUniformiv
+_glGetShaderSource
+_glBindAttribLocation
+_glGetActiveAttrib
+_glGetAttribLocation
+_glStencilFuncSeparate
+_glStencilOpSeparate
+_glStencilMaskSeparate
+_glUniformMatrix2x3fv
+_glUniformMatrix3x2fv
+_glUniformMatrix2x4fv
+_glUniformMatrix4x2fv
+_glUniformMatrix3x4fv
+_glUniformMatrix4x3fv
+_glXChooseVisual
+_glXCreateContext
+_glXDestroyContext
+_glXMakeCurrent
+_glXCopyContext
+_glXSwapBuffers
+_glXCreateGLXPixmap
+_glXDestroyGLXPixmap
+_glXQueryExtension
+_glXQueryVersion
+_glXIsDirect
+_glXGetConfig
+_glXGetCurrentContext
+_glXGetCurrentDrawable
+_glXWaitGL
+_glXWaitX
+_glXUseXFont
+_glXQueryExtensionsString
+_glXQueryServerString
+_glXGetClientString
+_glXGetCurrentDisplay
+_glXChooseFBConfig
+_glXGetFBConfigAttrib
+_glXGetFBConfigs
+_glXGetVisualFromFBConfig
+_glXCreateWindow
+_glXDestroyWindow
+_glXCreatePixmap
+_glXDestroyPixmap
+_glXCreatePbuffer
+_glXDestroyPbuffer
+_glXQueryDrawable
+_glXCreateNewContext
+_glXMakeContextCurrent
+_glXGetCurrentReadDrawable
+_glXQueryContext
+_glXSelectEvent
+_glXGetSelectedEvent
+_glXGetProcAddress
diff --git a/src/glx/apple/apple_glx.c b/src/glx/apple/apple_glx.c
new file mode 100644 (file)
index 0000000..d9bc091
--- /dev/null
@@ -0,0 +1,214 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <stdarg.h>
+#include <dlfcn.h>
+#include "appledri.h"
+#include "apple_glx.h"
+#include "apple_glx_context.h"
+#include "apple_cgl.h"
+#include "apple_xgl_api.h"
+
+static bool initialized = false;
+static int dri_event_base = 0;
+
+const GLuint __glXDefaultPixelStore[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 1 };
+
+#ifndef OPENGL_LIB_PATH
+#define OPENGL_LIB_PATH "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib"
+#endif
+
+static void *libgl_handle = NULL;
+
+static bool diagnostic = false;
+
+void
+apple_glx_diagnostic(const char *fmt, ...)
+{
+   va_list vl;
+
+   if (diagnostic) {
+      fprintf(stderr, "DIAG: ");
+
+      va_start(vl, fmt);
+      vfprintf(stderr, fmt, vl);
+      va_end(vl);
+   }
+}
+
+int
+apple_get_dri_event_base(void)
+{
+   if (!initialized) {
+      fprintf(stderr,
+              "error: dri_event_base called before apple_init_glx!\n");
+      abort();
+   }
+   return dri_event_base;
+}
+
+static void
+surface_notify_handler(Display * dpy, unsigned int uid, int kind)
+{
+
+   switch (kind) {
+   case AppleDRISurfaceNotifyDestroyed:
+      apple_glx_diagnostic("%s: surface destroyed %u\n", __func__, uid);
+      apple_glx_surface_destroy(uid);
+      break;
+
+   case AppleDRISurfaceNotifyChanged:{
+         int updated;
+
+         updated = apple_glx_context_surface_changed(uid, pthread_self());
+
+         apple_glx_diagnostic("surface notify updated %d\n", updated);
+      }
+      break;
+
+   default:
+      fprintf(stderr, "unhandled kind of event: %d in %s\n", kind, __func__);
+   }
+}
+
+xp_client_id
+apple_glx_get_client_id(void)
+{
+   static xp_client_id id;
+
+   if (0 == id) {
+      if ((XP_Success != xp_init(XP_IN_BACKGROUND)) ||
+          (Success != xp_get_client_id(&id))) {
+         return 0;
+      }
+   }
+
+   return id;
+}
+
+/* Return true if an error occured. */
+bool
+apple_init_glx(Display * dpy)
+{
+   int eventBase, errorBase;
+   int major, minor, patch;
+
+   if (!XAppleDRIQueryExtension(dpy, &eventBase, &errorBase))
+      return true;
+
+   if (!XAppleDRIQueryVersion(dpy, &major, &minor, &patch))
+      return true;
+
+   if (initialized)
+      return false;
+
+   if (getenv("LIBGL_DIAGNOSTIC")) {
+      printf("initializing libGL in %s\n", __func__);
+      diagnostic = true;
+   }
+
+   apple_cgl_init();
+   apple_xgl_init_direct();
+   libgl_handle = dlopen(OPENGL_LIB_PATH, RTLD_LAZY);
+   (void) apple_glx_get_client_id();
+
+   XAppleDRISetSurfaceNotifyHandler(surface_notify_handler);
+
+   /* This should really be per display. */
+   dri_event_base = eventBase;
+   initialized = true;
+
+   return false;
+}
+
+void
+apple_glx_swap_buffers(void *ptr)
+{
+   struct apple_glx_context *ac = ptr;
+
+   /* This may not be needed with CGLFlushDrawable: */
+   glFlush();
+   apple_cgl.flush_drawable(ac->context_obj);
+}
+
+void *
+apple_glx_get_proc_address(const GLubyte * procname)
+{
+   size_t len;
+   void *h, *s;
+   char *pname = (char *) procname;
+
+   assert(NULL != procname);
+   len = strlen(pname);
+
+   if (len < 3) {
+      return NULL;
+   }
+
+   if ((pname != strstr(pname, "glX")) && (pname != strstr(pname, "gl"))) {
+      fprintf(stderr,
+              "warning: get proc address request is not for a gl or glX function");
+      return NULL;
+   }
+
+   /* Search using the default symbols first. */
+   (void) dlerror();            /*drain dlerror */
+   h = dlopen(NULL, RTLD_NOW);
+   if (NULL == h) {
+      fprintf(stderr, "warning: get proc address: %s\n", dlerror());
+      return NULL;
+   }
+
+   s = dlsym(h, pname);
+
+   if (NULL == s) {
+      /* Try the libGL.dylib from the OpenGL.framework. */
+      s = dlsym(libgl_handle, pname);
+   }
+
+   dlclose(h);
+
+   return s;
+}
+
+void
+apple_glx_waitx(Display * dpy, void *ptr)
+{
+   struct apple_private_context *ac = ptr;
+
+   (void) ac;
+
+   glFlush();
+   glFinish();
+   XSync(dpy, False);
+}
diff --git a/src/glx/apple/apple_glx.h b/src/glx/apple/apple_glx.h
new file mode 100644 (file)
index 0000000..9b3643b
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ Copyright (c) 2008 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#ifndef APPLE_GLX_H
+#define APPLE_GLX_H
+
+#include <stdbool.h>
+#include <GL/gl.h>
+#include <GL/glxint.h>
+#include <X11/Xlib.h>
+
+#define XP_NO_X_HEADERS
+#include <Xplugin.h>
+
+void apple_glx_diagnostic(const char *fmt, ...);
+xp_client_id apple_glx_get_client_id(void);
+bool apple_init_glx(Display * dpy);
+void apple_glx_swap_buffers(void *ptr);
+void *apple_glx_get_proc_address(const GLubyte * procname);
+void apple_glx_waitx(Display * dpy, void *ptr);
+int apple_get_dri_event_base(void);
+
+#endif
diff --git a/src/glx/apple/apple_glx_context.c b/src/glx/apple/apple_glx_context.c
new file mode 100644 (file)
index 0000000..c58d05a
--- /dev/null
@@ -0,0 +1,616 @@
+/* 
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <assert.h>
+#include <pthread.h>
+
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
+// Get the newer glext.h first
+#include <GL/gl.h>
+#include <GL/glext.h>
+
+#include <OpenGL/CGLTypes.h>
+#include <OpenGL/CGLCurrent.h>
+#include <OpenGL/OpenGL.h>
+
+#include "glxclient.h"
+
+#include "apple_glx.h"
+#include "apple_glx_context.h"
+#include "appledri.h"
+#include "apple_visual.h"
+#include "apple_cgl.h"
+#include "apple_glx_drawable.h"
+
+static pthread_mutex_t context_lock = PTHREAD_MUTEX_INITIALIZER;
+
+/*
+ * This should be locked on creation and destruction of the 
+ * apple_glx_contexts.
+ *
+ * It's also locked when the surface_notify_handler is searching
+ * for a uid associated with a surface.
+ */
+static struct apple_glx_context *context_list = NULL;
+
+/* This guards the context_list above. */
+static void
+lock_context_list(void)
+{
+   int err;
+
+   err = pthread_mutex_lock(&context_lock);
+
+   if (err) {
+      fprintf(stderr, "pthread_mutex_lock failure in %s: %d\n",
+              __func__, err);
+      abort();
+   }
+}
+
+static void
+unlock_context_list(void)
+{
+   int err;
+
+   err = pthread_mutex_unlock(&context_lock);
+
+   if (err) {
+      fprintf(stderr, "pthread_mutex_unlock failure in %s: %d\n",
+              __func__, err);
+      abort();
+   }
+}
+
+static bool
+is_context_valid(struct apple_glx_context *ac)
+{
+   struct apple_glx_context *i;
+
+   lock_context_list();
+
+   for (i = context_list; i; i = i->next) {
+      if (ac == i) {
+         unlock_context_list();
+         return true;
+      }
+   }
+
+   unlock_context_list();
+
+   return false;
+}
+
+/* This creates an apple_private_context struct.  
+ *
+ * It's typically called to save the struct in a GLXContext.
+ *
+ * This is also where the CGLContextObj is created, and the CGLPixelFormatObj.
+ */
+bool
+apple_glx_create_context(void **ptr, Display * dpy, int screen,
+                         const void *mode, void *sharedContext,
+                         int *errorptr, bool * x11errorptr)
+{
+   struct apple_glx_context *ac;
+   struct apple_glx_context *sharedac = sharedContext;
+   CGLError error;
+
+   *ptr = NULL;
+
+   ac = malloc(sizeof *ac);
+
+   if (NULL == ac) {
+      *errorptr = BadAlloc;
+      *x11errorptr = true;
+      return true;
+   }
+
+   if (sharedac && !is_context_valid(sharedac)) {
+      *errorptr = GLXBadContext;
+      *x11errorptr = false;
+      return true;
+   }
+
+   ac->context_obj = NULL;
+   ac->pixel_format_obj = NULL;
+   ac->drawable = NULL;
+   ac->thread_id = pthread_self();
+   ac->screen = screen;
+   ac->double_buffered = false;
+   ac->uses_stereo = false;
+   ac->need_update = false;
+   ac->is_current = false;
+   ac->made_current = false;
+   ac->last_surface_window = None;
+
+   apple_visual_create_pfobj(&ac->pixel_format_obj, mode,
+                             &ac->double_buffered, &ac->uses_stereo,
+                             /*offscreen */ false);
+
+   error = apple_cgl.create_context(ac->pixel_format_obj,
+                                    sharedac ? sharedac->context_obj : NULL,
+                                    &ac->context_obj);
+
+
+   if (error) {
+      (void) apple_cgl.destroy_pixel_format(ac->pixel_format_obj);
+
+      free(ac);
+
+      if (kCGLBadMatch == error) {
+         *errorptr = BadMatch;
+         *x11errorptr = true;
+      }
+      else {
+         *errorptr = GLXBadContext;
+         *x11errorptr = false;
+      }
+
+      if (getenv("LIBGL_DIAGNOSTIC"))
+         fprintf(stderr, "error: %s\n", apple_cgl.error_string(error));
+
+      return true;
+   }
+
+   /* The context creation succeeded, so we can link in the new context. */
+   lock_context_list();
+
+   if (context_list)
+      context_list->previous = ac;
+
+   ac->previous = NULL;
+   ac->next = context_list;
+   context_list = ac;
+
+   *ptr = ac;
+
+   apple_glx_diagnostic("%s: ac %p ac->context_obj %p\n",
+                        __func__, (void *) ac, (void *) ac->context_obj);
+
+   unlock_context_list();
+
+   return false;
+}
+
+void
+apple_glx_destroy_context(void **ptr, Display * dpy)
+{
+   struct apple_glx_context *ac = *ptr;
+
+   if (NULL == ac)
+      return;
+
+   apple_glx_diagnostic("%s: ac %p ac->context_obj %p\n",
+                        __func__, (void *) ac, (void *) ac->context_obj);
+
+   if (apple_cgl.get_current_context() == ac->context_obj) {
+      apple_glx_diagnostic("%s: context ac->context_obj %p "
+                           "is still current!\n", __func__,
+                           (void *) ac->context_obj);
+      if (apple_cgl.set_current_context(NULL)) {
+         abort();
+      }
+   }
+
+   /* Remove ac from the context_list as soon as possible. */
+   lock_context_list();
+
+   if (ac->previous) {
+      ac->previous->next = ac->next;
+   }
+   else {
+      context_list = ac->next;
+   }
+
+   if (ac->next) {
+      ac->next->previous = ac->previous;
+   }
+
+   unlock_context_list();
+
+
+   if (apple_cgl.clear_drawable(ac->context_obj)) {
+      fprintf(stderr, "error: while clearing drawable!\n");
+      abort();
+   }
+
+   /*
+    * This potentially causes surface_notify_handler to be called in
+    * apple_glx.c... 
+    * We can NOT have a lock held at this point.  It would result in 
+    * an abort due to an attempted deadlock.  This is why we earlier
+    * removed the ac pointer from the double-linked list.
+    */
+   if (ac->drawable) {
+      ac->drawable->destroy(ac->drawable);
+   }
+
+   if (apple_cgl.destroy_pixel_format(ac->pixel_format_obj)) {
+      fprintf(stderr, "error: destroying pixel format in %s\n", __func__);
+      abort();
+   }
+
+   if (apple_cgl.destroy_context(ac->context_obj)) {
+      fprintf(stderr, "error: destroying context_obj in %s\n", __func__);
+      abort();
+   }
+
+   free(ac);
+
+   *ptr = NULL;
+
+   apple_glx_garbage_collect_drawables(dpy);
+}
+
+
+/* Return true if an error occured. */
+bool
+apple_glx_make_current_context(Display * dpy, void *oldptr, void *ptr,
+                               GLXDrawable drawable)
+{
+   struct apple_glx_context *oldac = oldptr;
+   struct apple_glx_context *ac = ptr;
+   struct apple_glx_drawable *newagd = NULL;
+   CGLError cglerr;
+   bool same_drawable = false;
+
+#if 0
+   apple_glx_diagnostic("%s: oldac %p ac %p drawable 0x%lx\n",
+                        __func__, (void *) oldac, (void *) ac, drawable);
+
+   apple_glx_diagnostic("%s: oldac->context_obj %p ac->context_obj %p\n",
+                        __func__,
+                        (void *) (oldac ? oldac->context_obj : NULL),
+                        (void *) (ac ? ac->context_obj : NULL));
+#endif
+
+   /* This a common path for GLUT and other apps, so special case it. */
+   if (ac && ac->drawable && ac->drawable->drawable == drawable) {
+      same_drawable = true;
+
+      if (ac->is_current)
+         return false;
+   }
+
+   /* Reset the is_current state of the old context, if non-NULL. */
+   if (oldac && (ac != oldac))
+      oldac->is_current = false;
+
+   if (NULL == ac) {
+      /*Clear the current context for this thread. */
+      apple_cgl.set_current_context(NULL);
+
+      if (oldac) {
+         oldac->is_current = false;
+
+         if (oldac->drawable) {
+            oldac->drawable->destroy(oldac->drawable);
+            oldac->drawable = NULL;
+         }
+
+         /* Invalidate this to prevent surface recreation. */
+         oldac->last_surface_window = None;
+      }
+
+      return false;
+   }
+
+   if (None == drawable) {
+      bool error = false;
+
+      /* Clear the current drawable for this context_obj. */
+
+      if (apple_cgl.set_current_context(ac->context_obj))
+         error = true;
+
+      if (apple_cgl.clear_drawable(ac->context_obj))
+         error = true;
+
+      if (ac->drawable) {
+         ac->drawable->destroy(ac->drawable);
+         ac->drawable = NULL;
+      }
+
+      /* Invalidate this to prevent surface recreation. */
+      ac->last_surface_window = None;
+
+      apple_glx_diagnostic("%s: drawable is None, error is: %d\n",
+                           __func__, error);
+
+      return error;
+   }
+
+   /* This is an optimisation to avoid searching for the current drawable. */
+   if (ac->drawable && ac->drawable->drawable == drawable) {
+      newagd = ac->drawable;
+   }
+   else {
+      /* Find the drawable if possible, and retain a reference to it. */
+      newagd =
+         apple_glx_drawable_find(drawable, APPLE_GLX_DRAWABLE_REFERENCE);
+   }
+
+   /*
+    * Try to destroy the old drawable, so long as the new one
+    * isn't the old. 
+    */
+   if (ac->drawable && !same_drawable) {
+      ac->drawable->destroy(ac->drawable);
+      ac->drawable = NULL;
+   }
+
+   if (NULL == newagd) {
+      if (apple_glx_surface_create(dpy, ac->screen, drawable, &newagd))
+         return true;
+
+      /* The drawable is referenced once by apple_glx_surface_create. */
+
+      /*
+       * FIXME: We actually need 2 references to prevent premature surface 
+       * destruction.  The problem is that the surface gets destroyed in 
+       * the case of the context being reused for another window, and
+       * we then lose the surface contents.  Wait for destruction of a
+       * window to destroy a surface.
+       *
+       * Note: this may leave around surfaces we don't want around, if
+       * say we are using X for raster drawing after OpenGL rendering, 
+       * but it will be compatible with the old libGL's behavior.
+       *
+       * Someday the X11 and OpenGL rendering must be unified at some
+       * layer.  I suspect we can do that via shared memory and 
+       * multiple threads in the X server (1 for each context created
+       * by a client).  This would also allow users to render from 
+       * multiple clients to the same OpenGL surface.  In fact it could
+       * all be OpenGL.
+       *
+       */
+      newagd->reference(newagd);
+
+      /* Save the new drawable with the context structure. */
+      ac->drawable = newagd;
+   }
+   else {
+      /* We are reusing an existing drawable structure. */
+
+      if (same_drawable) {
+         assert(ac->drawable == newagd);
+         /* The drawable_find above retained a reference for us. */
+      }
+      else {
+         ac->drawable = newagd;
+      }
+   }
+
+   /* 
+    * Avoid this costly path if this is the same drawable and the
+    * context is already current. 
+    */
+
+   if (same_drawable && ac->is_current) {
+      apple_glx_diagnostic("%s: same_drawable and ac->is_current\n");
+      return false;
+   }
+
+   cglerr = apple_cgl.set_current_context(ac->context_obj);
+
+   if (kCGLNoError != cglerr) {
+      fprintf(stderr, "set current error: %s\n",
+              apple_cgl.error_string(cglerr));
+      return true;
+   }
+
+   ac->is_current = true;
+
+   assert(NULL != ac->context_obj);
+   assert(NULL != ac->drawable);
+
+   ac->thread_id = pthread_self();
+
+   /* This will be set if the pending_destroy code indicates it should be: */
+   ac->last_surface_window = None;
+
+   switch (ac->drawable->type) {
+   case APPLE_GLX_DRAWABLE_PBUFFER:
+   case APPLE_GLX_DRAWABLE_SURFACE:
+   case APPLE_GLX_DRAWABLE_PIXMAP:
+      if (ac->drawable->callbacks.make_current) {
+         if (ac->drawable->callbacks.make_current(ac, ac->drawable))
+            return true;
+      }
+      break;
+
+   default:
+      fprintf(stderr, "internal error: invalid drawable type: %d\n",
+              ac->drawable->type);
+      abort();
+   }
+
+   return false;
+}
+
+bool
+apple_glx_is_current_drawable(Display * dpy, void *ptr, GLXDrawable drawable)
+{
+   struct apple_glx_context *ac = ptr;
+
+   if (ac->drawable && ac->drawable->drawable == drawable) {
+      return true;
+   }
+   else if (NULL == ac->drawable && None != ac->last_surface_window) {
+      apple_glx_context_update(dpy, ac);
+
+      return (ac->drawable && ac->drawable->drawable == drawable);
+   }
+
+   return false;
+}
+
+bool
+apple_glx_copy_context(void *currentptr, void *srcptr, void *destptr,
+                       unsigned long mask, int *errorptr, bool * x11errorptr)
+{
+   struct apple_glx_context *src, *dest;
+   CGLError err;
+
+   src = srcptr;
+   dest = destptr;
+
+   if (src->screen != dest->screen) {
+      *errorptr = BadMatch;
+      *x11errorptr = true;
+      return true;
+   }
+
+   if (dest == currentptr || dest->is_current) {
+      *errorptr = BadAccess;
+      *x11errorptr = true;
+      return true;
+   }
+
+   /* 
+    * If srcptr is the current context then we should do an implicit glFlush.
+    */
+   if (currentptr == srcptr)
+      glFlush();
+
+   err = apple_cgl.copy_context(src->context_obj, dest->context_obj,
+                                (GLbitfield) mask);
+
+   if (kCGLNoError != err) {
+      *errorptr = GLXBadContext;
+      *x11errorptr = false;
+      return true;
+   }
+
+   return false;
+}
+
+/* 
+ * The value returned is the total number of contexts set to update. 
+ * It's meant for debugging/introspection.
+ */
+int
+apple_glx_context_surface_changed(unsigned int uid, pthread_t caller)
+{
+   struct apple_glx_context *ac;
+   int updated = 0;
+
+   lock_context_list();
+
+   for (ac = context_list; ac; ac = ac->next) {
+      if (ac->drawable && APPLE_GLX_DRAWABLE_SURFACE == ac->drawable->type
+          && ac->drawable->types.surface.uid == uid) {
+
+         if (caller == ac->thread_id) {
+            apple_glx_diagnostic("caller is the same thread for uid %u\n",
+                                 uid);
+
+            xp_update_gl_context(ac->context_obj);
+         }
+         else {
+            ac->need_update = true;
+            ++updated;
+         }
+      }
+   }
+
+   unlock_context_list();
+
+   return updated;
+}
+
+void
+apple_glx_context_update(Display * dpy, void *ptr)
+{
+   struct apple_glx_context *ac = ptr;
+
+   if (NULL == ac->drawable && None != ac->last_surface_window) {
+      bool failed;
+
+      /* Attempt to recreate the surface for a destroyed drawable. */
+      failed =
+         apple_glx_make_current_context(dpy, ac, ac, ac->last_surface_window);
+
+      apple_glx_diagnostic("%s: surface recreation failed? %s\n", __func__,
+                           failed ? "YES" : "NO");
+   }
+
+   if (ac->need_update) {
+      xp_update_gl_context(ac->context_obj);
+      ac->need_update = false;
+
+      apple_glx_diagnostic("%s: updating context %p\n", __func__, ptr);
+   }
+
+   if (ac->drawable && APPLE_GLX_DRAWABLE_SURFACE == ac->drawable->type
+       && ac->drawable->types.surface.pending_destroy) {
+      apple_glx_diagnostic("%s: clearing drawable %p\n", __func__, ptr);
+      apple_cgl.clear_drawable(ac->context_obj);
+
+      if (ac->drawable) {
+         struct apple_glx_drawable *d;
+
+         apple_glx_diagnostic("%s: attempting to destroy drawable %p\n",
+                              __func__, ptr);
+         apple_glx_diagnostic("%s: ac->drawable->drawable is 0x%lx\n",
+                              __func__, ac->drawable->drawable);
+
+         d = ac->drawable;
+
+         ac->last_surface_window = d->drawable;
+
+         ac->drawable = NULL;
+
+         /* 
+          * This will destroy the surface drawable if there are 
+          * no references to it.  
+          * It also subtracts 1 from the reference_count.
+          * If there are references to it, then it's probably made
+          * current in another context.
+          */
+         d->destroy(d);
+      }
+   }
+}
+
+bool
+apple_glx_context_uses_stereo(void *ptr)
+{
+   struct apple_glx_context *ac = ptr;
+
+   return ac->uses_stereo;
+}
diff --git a/src/glx/apple/apple_glx_context.h b/src/glx/apple/apple_glx_context.h
new file mode 100644 (file)
index 0000000..c2a3e3f
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+#ifndef APPLE_GLX_CONTEXT_H
+#define APPLE_GLX_CONTEXT_H
+
+/* <rdar://problem/6953344> */
+#define glTexImage1D glTexImage1D_OSX
+#define glTexImage2D glTexImage2D_OSX
+#define glTexImage3D glTexImage3D_OSX
+#include <OpenGL/CGLTypes.h>
+#include <OpenGL/CGLContext.h>
+#undef glTexImage1D
+#undef glTexImage2D
+#undef glTexImage3D
+
+#include <stdbool.h>
+#include <X11/Xlib.h>
+#include <GL/glx.h>
+#define XP_NO_X_HEADERS
+#include <Xplugin.h>
+#undef XP_NO_X_HEADERS
+
+#include "apple_glx_drawable.h"
+
+struct apple_glx_context
+{
+   CGLContextObj context_obj;
+   CGLPixelFormatObj pixel_format_obj;
+   struct apple_glx_drawable *drawable;
+   pthread_t thread_id;
+   int screen;
+   bool double_buffered;
+   bool uses_stereo;
+   bool need_update;
+   bool is_current;             /* True if the context is current in some thread. */
+   bool made_current;           /* True if the context has ever been made current. */
+
+   /*
+    * last_surface is set by the pending_destroy code handler for a drawable.
+    * Due to a CG difference, we have to recreate a surface if the window
+    * is unmapped and mapped again.
+    */
+   Window last_surface_window;
+   struct apple_glx_context *previous, *next;
+};
+
+bool apple_glx_create_context(void **ptr, Display * dpy, int screen,
+                              const void *mode, void *sharedContext,
+                              int *errorptr, bool * x11errorptr);
+void apple_glx_destroy_context(void **ptr, Display * dpy);
+
+bool apple_glx_make_current_context(Display * dpy, void *oldptr, void *ptr,
+                                    GLXDrawable drawable);
+bool apple_glx_is_current_drawable(Display * dpy, void *ptr,
+                                   GLXDrawable drawable);
+
+bool apple_glx_copy_context(void *currentptr, void *srcptr, void *destptr,
+                            unsigned long mask, int *errorptr,
+                            bool * x11errorptr);
+
+int apple_glx_context_surface_changed(unsigned int uid, pthread_t caller);
+
+void apple_glx_context_update(Display * dpy, void *ptr);
+
+bool apple_glx_context_uses_stereo(void *ptr);
+
+#endif /*APPLE_GLX_CONTEXT_H */
diff --git a/src/glx/apple/apple_glx_drawable.c b/src/glx/apple/apple_glx_drawable.c
new file mode 100644 (file)
index 0000000..5530224
--- /dev/null
@@ -0,0 +1,542 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <pthread.h>
+#include "apple_glx.h"
+#include "apple_glx_context.h"
+#include "apple_glx_drawable.h"
+#include "appledri.h"
+
+static pthread_mutex_t drawables_lock = PTHREAD_MUTEX_INITIALIZER;
+static struct apple_glx_drawable *drawables_list = NULL;
+
+static void
+lock_drawables_list(void)
+{
+   int err;
+
+   err = pthread_mutex_lock(&drawables_lock);
+
+   if (err) {
+      fprintf(stderr, "pthread_mutex_lock failure in %s: %d\n",
+              __func__, err);
+      abort();
+   }
+}
+
+static void
+unlock_drawables_list(void)
+{
+   int err;
+
+   err = pthread_mutex_unlock(&drawables_lock);
+
+   if (err) {
+      fprintf(stderr, "pthread_mutex_unlock failure in %s: %d\n",
+              __func__, err);
+      abort();
+   }
+}
+
+struct apple_glx_drawable *
+apple_glx_find_drawable(Display * dpy, GLXDrawable drawable)
+{
+   struct apple_glx_drawable *i, *agd = NULL;
+
+   lock_drawables_list();
+
+   for (i = drawables_list; i; i = i->next) {
+      if (i->drawable == drawable) {
+         agd = i;
+         break;
+      }
+   }
+
+   unlock_drawables_list();
+
+   return agd;
+}
+
+static void
+drawable_lock(struct apple_glx_drawable *agd)
+{
+   int err;
+
+   err = pthread_mutex_lock(&agd->mutex);
+
+   if (err) {
+      fprintf(stderr, "pthread_mutex_lock error: %d\n", err);
+      abort();
+   }
+}
+
+static void
+drawable_unlock(struct apple_glx_drawable *d)
+{
+   int err;
+
+   err = pthread_mutex_unlock(&d->mutex);
+
+   if (err) {
+      fprintf(stderr, "pthread_mutex_unlock error: %d\n", err);
+      abort();
+   }
+}
+
+
+static void
+reference_drawable(struct apple_glx_drawable *d)
+{
+   d->lock(d);
+   d->reference_count++;
+   d->unlock(d);
+}
+
+static void
+release_drawable(struct apple_glx_drawable *d)
+{
+   d->lock(d);
+   d->reference_count--;
+   d->unlock(d);
+}
+
+/* The drawables list must be locked prior to calling this. */
+/* Return true if the drawable was destroyed. */
+static bool
+destroy_drawable(struct apple_glx_drawable *d)
+{
+
+   d->lock(d);
+
+   if (d->reference_count > 0) {
+      d->unlock(d);
+      return false;
+   }
+
+   d->unlock(d);
+
+   if (d->previous) {
+      d->previous->next = d->next;
+   }
+   else {
+      /*
+       * The item must be at the head of the list, if it
+       * has no previous pointer. 
+       */
+      drawables_list = d->next;
+   }
+
+   if (d->next)
+      d->next->previous = d->previous;
+
+   unlock_drawables_list();
+
+   if (d->callbacks.destroy) {
+      /*
+       * Warning: this causes other routines to be called (potentially)
+       * from surface_notify_handler.  It's probably best to not have
+       * any locks at this point locked.
+       */
+      d->callbacks.destroy(d->display, d);
+   }
+
+   apple_glx_diagnostic("%s: freeing %p\n", __func__, (void *) d);
+
+   free(d);
+
+   /* So that the locks are balanced and the caller correctly unlocks. */
+   lock_drawables_list();
+
+   return true;
+}
+
+/*
+ * This is typically called when a context is destroyed or the current
+ * drawable is made None.
+ */
+static bool
+destroy_drawable_callback(struct apple_glx_drawable *d)
+{
+   bool result;
+
+   d->lock(d);
+
+   apple_glx_diagnostic("%s: %p ->reference_count before -- %d\n", __func__,
+                        (void *) d, d->reference_count);
+
+   d->reference_count--;
+
+   if (d->reference_count > 0) {
+      d->unlock(d);
+      return false;
+   }
+
+   d->unlock(d);
+
+   lock_drawables_list();
+
+   result = destroy_drawable(d);
+
+   unlock_drawables_list();
+
+   return result;
+}
+
+static bool
+is_pbuffer(struct apple_glx_drawable *d)
+{
+   return APPLE_GLX_DRAWABLE_PBUFFER == d->type;
+}
+
+static bool
+is_pixmap(struct apple_glx_drawable *d)
+{
+   return APPLE_GLX_DRAWABLE_PIXMAP == d->type;
+}
+
+static void
+common_init(Display * dpy, GLXDrawable drawable, struct apple_glx_drawable *d)
+{
+   int err;
+   pthread_mutexattr_t attr;
+
+   d->display = dpy;
+   d->reference_count = 0;
+   d->drawable = drawable;
+   d->type = -1;
+
+   err = pthread_mutexattr_init(&attr);
+
+   if (err) {
+      fprintf(stderr, "pthread_mutexattr_init error: %d\n", err);
+      abort();
+   }
+
+   /* 
+    * There are some patterns that require a recursive mutex,
+    * when working with locks that protect the apple_glx_drawable,
+    * and reference functions like ->reference, and ->release.
+    */
+   err = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+
+   if (err) {
+      fprintf(stderr, "error: setting pthread mutex type: %d\n", err);
+      abort();
+   }
+
+   err = pthread_mutex_init(&d->mutex, &attr);
+
+   if (err) {
+      fprintf(stderr, "pthread_mutex_init error: %d\n", err);
+      abort();
+   }
+
+   (void) pthread_mutexattr_destroy(&attr);
+
+   d->lock = drawable_lock;
+   d->unlock = drawable_unlock;
+
+   d->reference = reference_drawable;
+   d->release = release_drawable;
+
+   d->destroy = destroy_drawable_callback;
+
+   d->is_pbuffer = is_pbuffer;
+   d->is_pixmap = is_pixmap;
+
+   d->width = -1;
+   d->height = -1;
+   d->row_bytes = 0;
+   d->path[0] = '\0';
+   d->fd = -1;
+   d->buffer = NULL;
+   d->buffer_length = 0;
+
+   d->previous = NULL;
+   d->next = NULL;
+}
+
+static void
+link_tail(struct apple_glx_drawable *agd)
+{
+   lock_drawables_list();
+
+   /* Link the new drawable into the global list. */
+   agd->next = drawables_list;
+
+   if (drawables_list)
+      drawables_list->previous = agd;
+
+   drawables_list = agd;
+
+   unlock_drawables_list();
+}
+
+/*WARNING: this returns a locked and referenced object. */
+bool
+apple_glx_drawable_create(Display * dpy,
+                          int screen,
+                          GLXDrawable drawable,
+                          struct apple_glx_drawable **agdResult,
+                          struct apple_glx_drawable_callbacks *callbacks)
+{
+   struct apple_glx_drawable *d;
+
+   d = calloc(1, sizeof *d);
+
+   if (NULL == d) {
+      perror("malloc");
+      return true;
+   }
+
+   common_init(dpy, drawable, d);
+   d->type = callbacks->type;
+   d->callbacks = *callbacks;
+
+   d->reference(d);
+   d->lock(d);
+
+   link_tail(d);
+
+   apple_glx_diagnostic("%s: new drawable %p\n", __func__, (void *) d);
+
+   *agdResult = d;
+
+   return false;
+}
+
+static int error_count = 0;
+
+static int
+error_handler(Display * dpy, XErrorEvent * err)
+{
+   if (err->error_code == BadWindow) {
+      ++error_count;
+   }
+
+   return 0;
+}
+
+void
+apple_glx_garbage_collect_drawables(Display * dpy)
+{
+   struct apple_glx_drawable *d, *dnext;
+   Window root;
+   int x, y;
+   unsigned int width, height, bd, depth;
+   int (*old_handler) (Display *, XErrorEvent *);
+
+
+   if (NULL == drawables_list)
+      return;
+
+   old_handler = XSetErrorHandler(error_handler);
+
+   XSync(dpy, False);
+
+   lock_drawables_list();
+
+   for (d = drawables_list; d;) {
+      dnext = d->next;
+
+      d->lock(d);
+
+      if (d->reference_count > 0) {
+         /* 
+          * Skip this, because some context still retains a reference 
+          * to the drawable.
+          */
+         d->unlock(d);
+         d = dnext;
+         continue;
+      }
+
+      d->unlock(d);
+
+      error_count = 0;
+
+      /* 
+       * Mesa uses XGetWindowAttributes, but some of these things are 
+       * most definitely not Windows, and that's against the rules.
+       * XGetGeometry on the other hand is legal with a Pixmap and Window.
+       */
+      XGetGeometry(dpy, d->drawable, &root, &x, &y, &width, &height, &bd,
+                   &depth);
+
+      if (error_count > 0) {
+         /*
+          * Note: this may not actually destroy the drawable.
+          * If another context retains a reference to the drawable
+          * after the reference count test above. 
+          */
+         (void) destroy_drawable(d);
+         error_count = 0;
+      }
+
+      d = dnext;
+   }
+
+   XSetErrorHandler(old_handler);
+
+   unlock_drawables_list();
+}
+
+unsigned int
+apple_glx_get_drawable_count(void)
+{
+   unsigned int result = 0;
+   struct apple_glx_drawable *d;
+
+   lock_drawables_list();
+
+   for (d = drawables_list; d; d = d->next)
+      ++result;
+
+   unlock_drawables_list();
+
+   return result;
+}
+
+struct apple_glx_drawable *
+apple_glx_drawable_find_by_type(GLXDrawable drawable, int type, int flags)
+{
+   struct apple_glx_drawable *d;
+
+   lock_drawables_list();
+
+   for (d = drawables_list; d; d = d->next) {
+      if (d->type == type && d->drawable == drawable) {
+         if (flags & APPLE_GLX_DRAWABLE_REFERENCE)
+            d->reference(d);
+
+         if (flags & APPLE_GLX_DRAWABLE_LOCK)
+            d->lock(d);
+
+         unlock_drawables_list();
+
+         return d;
+      }
+   }
+
+   unlock_drawables_list();
+
+   return NULL;
+}
+
+struct apple_glx_drawable *
+apple_glx_drawable_find(GLXDrawable drawable, int flags)
+{
+   struct apple_glx_drawable *d;
+
+   lock_drawables_list();
+
+   for (d = drawables_list; d; d = d->next) {
+      if (d->drawable == drawable) {
+         if (flags & APPLE_GLX_DRAWABLE_REFERENCE)
+            d->reference(d);
+
+         if (flags & APPLE_GLX_DRAWABLE_LOCK)
+            d->lock(d);
+
+         unlock_drawables_list();
+
+         return d;
+      }
+   }
+
+   unlock_drawables_list();
+
+   return NULL;
+}
+
+/* Return true if the type is valid for the drawable. */
+bool
+apple_glx_drawable_destroy_by_type(Display * dpy,
+                                   GLXDrawable drawable, int type)
+{
+   struct apple_glx_drawable *d;
+
+   lock_drawables_list();
+
+   for (d = drawables_list; d; d = d->next) {
+      if (drawable == d->drawable && type == d->type) {
+         /*
+          * The user has requested that we destroy this resource.
+          * However, there may be references in the contexts to it, so
+          * release it, and call destroy_drawable which doesn't destroy
+          * if the reference_count is > 0.
+          */
+         d->release(d);
+
+         apple_glx_diagnostic("%s d->reference_count %d\n",
+                              __func__, d->reference_count);
+
+         destroy_drawable(d);
+         unlock_drawables_list();
+         return true;
+      }
+   }
+
+   unlock_drawables_list();
+
+   return false;
+}
+
+struct apple_glx_drawable *
+apple_glx_drawable_find_by_uid(unsigned int uid, int flags)
+{
+   struct apple_glx_drawable *d;
+
+   lock_drawables_list();
+
+   for (d = drawables_list; d; d = d->next) {
+      /* Only surfaces have a uid. */
+      if (APPLE_GLX_DRAWABLE_SURFACE == d->type) {
+         if (d->types.surface.uid == uid) {
+            if (flags & APPLE_GLX_DRAWABLE_REFERENCE)
+               d->reference(d);
+
+            if (flags & APPLE_GLX_DRAWABLE_LOCK)
+               d->lock(d);
+
+            unlock_drawables_list();
+
+            return d;
+         }
+      }
+   }
+
+   unlock_drawables_list();
+
+   return NULL;
+}
diff --git a/src/glx/apple/apple_glx_drawable.h b/src/glx/apple/apple_glx_drawable.h
new file mode 100644 (file)
index 0000000..e49eae3
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+#ifndef APPLE_GLX_DRAWABLE_H
+#define APPLE_GLX_DRAWABLE_H
+
+/* Must be first for:
+ * <rdar://problem/6953344>
+ */
+#include "apple_glx_context.h"
+
+#include <pthread.h>
+#include <stdbool.h>
+#include <limits.h>
+#include <GL/glx.h>
+#define XP_NO_X_HEADERS
+#include <Xplugin.h>
+#undef XP_NO_X_HEADERS
+
+enum
+{
+   APPLE_GLX_DRAWABLE_SURFACE = 1,
+   APPLE_GLX_DRAWABLE_PBUFFER,
+   APPLE_GLX_DRAWABLE_PIXMAP
+};
+
+/* The flag for the find routine. */
+enum
+{
+   APPLE_GLX_DRAWABLE_LOCK = 2,
+   APPLE_GLX_DRAWABLE_REFERENCE = 4
+};
+
+struct apple_glx_context;
+struct apple_glx_drawable;
+
+struct apple_glx_surface
+{
+   xp_surface_id surface_id;
+   unsigned int uid;
+   bool pending_destroy;
+};
+
+struct apple_glx_pbuffer
+{
+   GLXPbuffer xid;              /* our pixmap */
+   int width, height;
+   GLint fbconfigID;
+   CGLPBufferObj buffer_obj;
+   unsigned long event_mask;
+};
+
+struct apple_glx_pixmap
+{
+   GLXPixmap xpixmap;
+   void *buffer;
+   int width, height, pitch, /*bytes per pixel */ bpp;
+   size_t size;
+   char path[PATH_MAX];
+   int fd;
+   CGLPixelFormatObj pixel_format_obj;
+   CGLContextObj context_obj;
+   GLint fbconfigID;
+};
+
+struct apple_glx_drawable_callbacks
+{
+   int type;
+     bool(*make_current) (struct apple_glx_context * ac,
+                          struct apple_glx_drawable * d);
+   void (*destroy) (Display * dpy, struct apple_glx_drawable * d);
+};
+
+struct apple_glx_drawable
+{
+   Display *display;
+   int reference_count;
+   GLXDrawable drawable;
+   int type;                    /* APPLE_GLX_DRAWABLE_* */
+
+   union
+   {
+      struct apple_glx_pixmap pixmap;
+      struct apple_glx_pbuffer pbuffer;
+      struct apple_glx_surface surface;
+   } types;
+
+   struct apple_glx_drawable_callbacks callbacks;
+
+   /* 
+    * This mutex protects the reference count and any other drawable data.
+    * It's used to prevent an early release of a drawable.
+    */
+   pthread_mutex_t mutex;
+   void (*lock) (struct apple_glx_drawable * agd);
+   void (*unlock) (struct apple_glx_drawable * agd);
+
+   void (*reference) (struct apple_glx_drawable * agd);
+   void (*release) (struct apple_glx_drawable * agd);
+
+     bool(*destroy) (struct apple_glx_drawable * agd);
+
+     bool(*is_pbuffer) (struct apple_glx_drawable * agd);
+
+     bool(*is_pixmap) (struct apple_glx_drawable * agd);
+
+/*BEGIN These are used for the mixed mode drawing... */
+   int width, height;
+   int row_bytes;
+   char path[PATH_MAX];
+   int fd;                      /* The file descriptor for this drawable's shared memory. */
+   void *buffer;                /* The memory for the drawable.  Typically shared memory. */
+   size_t buffer_length;
+     /*END*/ struct apple_glx_drawable *previous, *next;
+};
+
+struct apple_glx_context;
+
+/* May return NULL if not found */
+struct apple_glx_drawable *apple_glx_find_drawable(Display * dpy,
+                                                   GLXDrawable drawable);
+
+/* Returns true on error and locks the agd result with a reference. */
+bool apple_glx_drawable_create(Display * dpy,
+                               int screen,
+                               GLXDrawable drawable,
+                               struct apple_glx_drawable **agd,
+                               struct apple_glx_drawable_callbacks
+                               *callbacks);
+
+/* Returns true on error */
+bool apple_glx_create_drawable(Display * dpy,
+                               struct apple_glx_context *ac,
+                               GLXDrawable drawable,
+                               struct apple_glx_drawable **agd);
+
+void apple_glx_garbage_collect_drawables(Display * dpy);
+
+/* 
+ * This returns the total number of drawables. 
+ * It's mostly intended for debugging and introspection.
+ */
+unsigned int apple_glx_get_drawable_count(void);
+
+struct apple_glx_drawable *apple_glx_drawable_find_by_type(GLXDrawable
+                                                           drawable, int type,
+                                                           int flags);
+
+struct apple_glx_drawable *apple_glx_drawable_find(GLXDrawable drawable,
+                                                   int flags);
+
+
+bool apple_glx_drawable_destroy_by_type(Display * dpy, GLXDrawable drawable,
+                                        int type);
+
+struct apple_glx_drawable *apple_glx_drawable_find_by_uid(unsigned int uid,
+                                                          int flags);
+
+/* Surfaces */
+
+bool apple_glx_surface_create(Display * dpy, int screen, GLXDrawable drawable,
+                              struct apple_glx_drawable **resultptr);
+
+void apple_glx_surface_destroy(unsigned int uid);
+
+/* Pbuffers */
+
+/* Returns true if an error occurred. */
+bool apple_glx_pbuffer_create(Display * dpy, GLXFBConfig config,
+                              int width, int height, int *errorcode,
+                              GLXPbuffer * pbuf);
+
+/* Returns true if the pbuffer was invalid. */
+bool apple_glx_pbuffer_destroy(Display * dpy, GLXPbuffer pbuf);
+
+/* Returns true if the pbuffer was valid and the attribute. */
+bool apple_glx_pbuffer_query(GLXDrawable d, int attribute,
+                             unsigned int *value);
+
+/* Returns true if the GLXDrawable is a valid GLXPbuffer, and the mask is set. */
+bool apple_glx_pbuffer_set_event_mask(GLXDrawable d, unsigned long mask);
+
+/* Returns true if the GLXDrawable is a valid GLXPbuffer, and the *mask is set. */
+bool apple_glx_pbuffer_get_event_mask(GLXDrawable d, unsigned long *mask);
+
+
+/* Pixmaps */
+
+/* mode is a __GLcontextModes * */
+/* Returns true if an error occurred. */
+bool apple_glx_pixmap_create(Display * dpy, int screen, Pixmap pixmap,
+                             const void *mode);
+
+/* Returns true if an error occurred. */
+bool apple_glx_pixmap_destroy(Display * dpy, Pixmap pixmap);
+
+bool apple_glx_pixmap_query(GLXPixmap pixmap, int attribute,
+                            unsigned int *value);
+
+
+
+#endif
diff --git a/src/glx/apple/apple_glx_pbuffer.c b/src/glx/apple/apple_glx_pbuffer.c
new file mode 100644 (file)
index 0000000..1466fea
--- /dev/null
@@ -0,0 +1,348 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+/* Must be before OpenGL.framework is included.  Remove once fixed:
+ * <rdar://problem/7872773>
+ */
+#include <GL/gl.h>
+#include <GL/glext.h>
+#define __gltypes_h_ 1
+
+/* Must be first for:
+ * <rdar://problem/6953344>
+ */
+#include "apple_glx_context.h"
+#include "apple_glx_drawable.h"
+
+#include <stdlib.h>
+#include <pthread.h>
+#include <assert.h>
+#include "apple_glx.h"
+#include "glcontextmodes.h"
+#include "apple_cgl.h"
+
+/* mesa defines in glew.h, Apple in glext.h.
+ * Due to namespace nightmares, just do it here.
+ */
+#ifndef GL_TEXTURE_RECTANGLE_EXT
+#define GL_TEXTURE_RECTANGLE_EXT 0x84F5
+#endif
+
+static bool pbuffer_make_current(struct apple_glx_context *ac,
+                                 struct apple_glx_drawable *d);
+
+static void pbuffer_destroy(Display * dpy, struct apple_glx_drawable *d);
+
+static struct apple_glx_drawable_callbacks callbacks = {
+   .type = APPLE_GLX_DRAWABLE_PBUFFER,
+   .make_current = pbuffer_make_current,
+   .destroy = pbuffer_destroy
+};
+
+
+/* Return true if an error occurred. */
+bool
+pbuffer_make_current(struct apple_glx_context *ac,
+                     struct apple_glx_drawable *d)
+{
+   struct apple_glx_pbuffer *pbuf = &d->types.pbuffer;
+   CGLError cglerr;
+
+   assert(APPLE_GLX_DRAWABLE_PBUFFER == d->type);
+
+   cglerr = apple_cgl.set_pbuffer(ac->context_obj, pbuf->buffer_obj, 0, 0, 0);
+
+   if (kCGLNoError != cglerr) {
+      fprintf(stderr, "set_pbuffer: %s\n", apple_cgl.error_string(cglerr));
+      return true;
+   }
+
+   if (!ac->made_current) {
+      glViewport(0, 0, pbuf->width, pbuf->height);
+      glScissor(0, 0, pbuf->width, pbuf->height);
+      ac->made_current = true;
+   }
+
+   apple_glx_diagnostic("made pbuffer drawable 0x%lx current\n", d->drawable);
+
+   return false;
+}
+
+void
+pbuffer_destroy(Display * dpy, struct apple_glx_drawable *d)
+{
+   struct apple_glx_pbuffer *pbuf = &d->types.pbuffer;
+
+   assert(APPLE_GLX_DRAWABLE_PBUFFER == d->type);
+
+   apple_glx_diagnostic("destroying pbuffer for drawable 0x%lx\n",
+                        d->drawable);
+
+   apple_cgl.destroy_pbuffer(pbuf->buffer_obj);
+   XFreePixmap(dpy, pbuf->xid);
+}
+
+/* Return true if an error occurred. */
+bool
+apple_glx_pbuffer_destroy(Display * dpy, GLXPbuffer pbuf)
+{
+   return !apple_glx_drawable_destroy_by_type(dpy, pbuf,
+                                              APPLE_GLX_DRAWABLE_PBUFFER);
+}
+
+/* Return true if an error occurred. */
+bool
+apple_glx_pbuffer_create(Display * dpy, GLXFBConfig config,
+                         int width, int height, int *errorcode,
+                         GLXPbuffer * result)
+{
+   struct apple_glx_drawable *d;
+   struct apple_glx_pbuffer *pbuf = NULL;
+   CGLError err;
+   Window root;
+   int screen;
+   Pixmap xid;
+   __GLcontextModes *modes = (__GLcontextModes *) config;
+
+   root = DefaultRootWindow(dpy);
+   screen = DefaultScreen(dpy);
+
+   /*
+    * This pixmap is only used for a persistent XID.
+    * The XC-MISC extension cleans up XIDs and reuses them transparently,
+    * so we need to retain a server-side reference.
+    */
+   xid = XCreatePixmap(dpy, root, (unsigned int) 1,
+                       (unsigned int) 1, DefaultDepth(dpy, screen));
+
+   if (None == xid) {
+      *errorcode = BadAlloc;
+      return true;
+   }
+
+   if (apple_glx_drawable_create(dpy, screen, xid, &d, &callbacks)) {
+      *errorcode = BadAlloc;
+      return true;
+   }
+
+   /* The lock is held in d from create onward. */
+   pbuf = &d->types.pbuffer;
+
+   pbuf->xid = xid;
+   pbuf->width = width;
+   pbuf->height = height;
+
+   err = apple_cgl.create_pbuffer(width, height, GL_TEXTURE_RECTANGLE_EXT,
+                                  (modes->alphaBits > 0) ? GL_RGBA : GL_RGB,
+                                  0, &pbuf->buffer_obj);
+
+   if (kCGLNoError != err) {
+      d->unlock(d);
+      d->destroy(d);
+      *errorcode = BadMatch;
+      return true;
+   }
+
+   pbuf->fbconfigID = modes->fbconfigID;
+
+   pbuf->event_mask = 0;
+
+   *result = pbuf->xid;
+
+   d->unlock(d);
+
+   return false;
+}
+
+
+
+/* Return true if an error occurred. */
+static bool
+get_max_size(int *widthresult, int *heightresult)
+{
+   CGLContextObj oldcontext;
+   GLint ar[2];
+
+   oldcontext = apple_cgl.get_current_context();
+
+   if (!oldcontext) {
+      /* 
+       * There is no current context, so we need to make one in order
+       * to call glGetInteger.
+       */
+      CGLPixelFormatObj pfobj;
+      CGLError err;
+      CGLPixelFormatAttribute attr[10];
+      int c = 0;
+      GLint vsref = 0;
+      CGLContextObj newcontext;
+
+      attr[c++] = kCGLPFAColorSize;
+      attr[c++] = 32;
+      attr[c++] = 0;
+
+      err = apple_cgl.choose_pixel_format(attr, &pfobj, &vsref);
+      if (kCGLNoError != err) {
+         if (getenv("LIBGL_DIAGNOSTIC")) {
+            printf("choose_pixel_format error in %s: %s\n", __func__,
+                   apple_cgl.error_string(err));
+         }
+
+         return true;
+      }
+
+
+      err = apple_cgl.create_context(pfobj, NULL, &newcontext);
+
+      if (kCGLNoError != err) {
+         if (getenv("LIBGL_DIAGNOSTIC")) {
+            printf("create_context error in %s: %s\n", __func__,
+                   apple_cgl.error_string(err));
+         }
+
+         apple_cgl.destroy_pixel_format(pfobj);
+
+         return true;
+      }
+
+      err = apple_cgl.set_current_context(newcontext);
+
+      if (kCGLNoError != err) {
+         printf("set_current_context error in %s: %s\n", __func__,
+                apple_cgl.error_string(err));
+         return true;
+      }
+
+
+      glGetIntegerv(GL_MAX_VIEWPORT_DIMS, ar);
+
+      apple_cgl.set_current_context(oldcontext);
+      apple_cgl.destroy_context(newcontext);
+      apple_cgl.destroy_pixel_format(pfobj);
+   }
+   else {
+      /* We have a valid context. */
+
+      glGetIntegerv(GL_MAX_VIEWPORT_DIMS, ar);
+   }
+
+   *widthresult = ar[0];
+   *heightresult = ar[1];
+
+   return false;
+}
+
+bool
+apple_glx_pbuffer_query(GLXPbuffer p, int attr, unsigned int *value)
+{
+   bool result = false;
+   struct apple_glx_drawable *d;
+   struct apple_glx_pbuffer *pbuf;
+
+   d = apple_glx_drawable_find_by_type(p, APPLE_GLX_DRAWABLE_PBUFFER,
+                                       APPLE_GLX_DRAWABLE_LOCK);
+
+   if (d) {
+      pbuf = &d->types.pbuffer;
+
+      switch (attr) {
+      case GLX_WIDTH:
+         *value = pbuf->width;
+         result = true;
+         break;
+
+      case GLX_HEIGHT:
+         *value = pbuf->height;
+         result = true;
+         break;
+
+      case GLX_PRESERVED_CONTENTS:
+         *value = true;
+         result = true;
+         break;
+
+      case GLX_LARGEST_PBUFFER:{
+            int width, height;
+            if (get_max_size(&width, &height)) {
+               fprintf(stderr, "internal error: "
+                       "unable to find the largest pbuffer!\n");
+            }
+            else {
+               *value = width;
+               result = true;
+            }
+         }
+         break;
+
+      case GLX_FBCONFIG_ID:
+         *value = pbuf->fbconfigID;
+         result = true;
+         break;
+      }
+
+      d->unlock(d);
+   }
+
+   return result;
+}
+
+bool
+apple_glx_pbuffer_set_event_mask(GLXDrawable drawable, unsigned long mask)
+{
+   struct apple_glx_drawable *d;
+   bool result = false;
+
+   d = apple_glx_drawable_find_by_type(drawable, APPLE_GLX_DRAWABLE_PBUFFER,
+                                       APPLE_GLX_DRAWABLE_LOCK);
+
+   if (d) {
+      d->types.pbuffer.event_mask = mask;
+      result = true;
+      d->unlock(d);
+   }
+
+   return result;
+}
+
+bool
+apple_glx_pbuffer_get_event_mask(GLXDrawable drawable, unsigned long *mask)
+{
+   struct apple_glx_drawable *d;
+   bool result = false;
+
+   d = apple_glx_drawable_find_by_type(drawable, APPLE_GLX_DRAWABLE_PBUFFER,
+                                       APPLE_GLX_DRAWABLE_LOCK);
+   if (d) {
+      *mask = d->types.pbuffer.event_mask;
+      result = true;
+      d->unlock(d);
+   }
+
+   return result;
+}
diff --git a/src/glx/apple/apple_glx_pixmap.c b/src/glx/apple/apple_glx_pixmap.c
new file mode 100644 (file)
index 0000000..af1791a
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pthread.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <assert.h>
+#include "apple_glx.h"
+#include "apple_cgl.h"
+#include "apple_visual.h"
+#include "apple_glx_drawable.h"
+#include "appledri.h"
+#include "glcontextmodes.h"
+
+static bool pixmap_make_current(struct apple_glx_context *ac,
+                                struct apple_glx_drawable *d);
+
+static void pixmap_destroy(Display * dpy, struct apple_glx_drawable *d);
+
+static struct apple_glx_drawable_callbacks callbacks = {
+   .type = APPLE_GLX_DRAWABLE_PIXMAP,
+   .make_current = pixmap_make_current,
+   .destroy = pixmap_destroy
+};
+
+static bool
+pixmap_make_current(struct apple_glx_context *ac,
+                    struct apple_glx_drawable *d)
+{
+   CGLError cglerr;
+   struct apple_glx_pixmap *p = &d->types.pixmap;
+
+   assert(APPLE_GLX_DRAWABLE_PIXMAP == d->type);
+
+   cglerr = apple_cgl.set_current_context(p->context_obj);
+
+   if (kCGLNoError != cglerr) {
+      fprintf(stderr, "set current context: %s\n",
+              apple_cgl.error_string(cglerr));
+      return true;
+   }
+
+   cglerr = apple_cgl.set_off_screen(p->context_obj, p->width, p->height,
+                                     p->pitch, p->buffer);
+
+   if (kCGLNoError != cglerr) {
+      fprintf(stderr, "set off screen: %s\n", apple_cgl.error_string(cglerr));
+
+      return true;
+   }
+
+   if (!ac->made_current) {
+      glViewport(0, 0, p->width, p->height);
+      glScissor(0, 0, p->width, p->height);
+      ac->made_current = true;
+   }
+
+   return false;
+}
+
+static void
+pixmap_destroy(Display * dpy, struct apple_glx_drawable *d)
+{
+   struct apple_glx_pixmap *p = &d->types.pixmap;
+
+   if (p->pixel_format_obj)
+      (void) apple_cgl.destroy_pixel_format(p->pixel_format_obj);
+
+   if (p->context_obj)
+      (void) apple_cgl.destroy_context(p->context_obj);
+
+   XAppleDRIDestroyPixmap(dpy, p->xpixmap);
+
+   if (p->buffer) {
+      if (munmap(p->buffer, p->size))
+         perror("munmap");
+
+      if (-1 == close(p->fd))
+         perror("close");
+
+      if (shm_unlink(p->path))
+         perror("shm_unlink");
+   }
+
+   apple_glx_diagnostic("destroyed pixmap buffer for: 0x%lx\n", d->drawable);
+}
+
+/* Return true if an error occurred. */
+bool
+apple_glx_pixmap_create(Display * dpy, int screen, Pixmap pixmap,
+                        const void *mode)
+{
+   struct apple_glx_drawable *d;
+   struct apple_glx_pixmap *p;
+   bool double_buffered;
+   bool uses_stereo;
+   CGLError error;
+   const __GLcontextModes *cmodes = mode;
+
+   if (apple_glx_drawable_create(dpy, screen, pixmap, &d, &callbacks))
+      return true;
+
+   /* d is locked and referenced at this point. */
+
+   p = &d->types.pixmap;
+
+   p->xpixmap = pixmap;
+   p->buffer = NULL;
+
+   if (!XAppleDRICreatePixmap(dpy, screen, pixmap,
+                              &p->width, &p->height, &p->pitch, &p->bpp,
+                              &p->size, p->path, PATH_MAX)) {
+      d->unlock(d);
+      d->destroy(d);
+      return true;
+   }
+
+   p->fd = shm_open(p->path, O_RDWR, 0);
+
+   if (p->fd < 0) {
+      perror("shm_open");
+      d->unlock(d);
+      d->destroy(d);
+      return true;
+   }
+
+   p->buffer = mmap(NULL, p->size, PROT_READ | PROT_WRITE,
+                    MAP_FILE | MAP_SHARED, p->fd, 0);
+
+   if (MAP_FAILED == p->buffer) {
+      perror("mmap");
+      d->unlock(d);
+      d->destroy(d);
+      return true;
+   }
+
+   apple_visual_create_pfobj(&p->pixel_format_obj, mode, &double_buffered,
+                             &uses_stereo, /*offscreen */ true);
+
+   error = apple_cgl.create_context(p->pixel_format_obj, NULL,
+                                    &p->context_obj);
+
+   if (kCGLNoError != error) {
+      d->unlock(d);
+      d->destroy(d);
+      return true;
+   }
+
+   p->fbconfigID = cmodes->fbconfigID;
+
+   d->unlock(d);
+
+   apple_glx_diagnostic("created: pixmap buffer for 0x%lx\n", d->drawable);
+
+   return false;
+}
+
+bool
+apple_glx_pixmap_query(GLXPixmap pixmap, int attr, unsigned int *value)
+{
+   struct apple_glx_drawable *d;
+   struct apple_glx_pixmap *p;
+   bool result = false;
+
+   d = apple_glx_drawable_find_by_type(pixmap, APPLE_GLX_DRAWABLE_PIXMAP,
+                                       APPLE_GLX_DRAWABLE_LOCK);
+
+   if (d) {
+      p = &d->types.pixmap;
+
+      switch (attr) {
+      case GLX_WIDTH:
+         *value = p->width;
+         result = true;
+         break;
+
+      case GLX_HEIGHT:
+         *value = p->height;
+         result = true;
+         break;
+
+      case GLX_FBCONFIG_ID:
+         *value = p->fbconfigID;
+         result = true;
+         break;
+      }
+
+      d->unlock(d);
+   }
+
+   return result;
+}
+
+/* Return true if the type is valid for pixmap. */
+bool
+apple_glx_pixmap_destroy(Display * dpy, GLXPixmap pixmap)
+{
+   return !apple_glx_drawable_destroy_by_type(dpy, pixmap,
+                                              APPLE_GLX_DRAWABLE_PIXMAP);
+}
diff --git a/src/glx/apple/apple_glx_surface.c b/src/glx/apple/apple_glx_surface.c
new file mode 100644 (file)
index 0000000..6db2910
--- /dev/null
@@ -0,0 +1,224 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+#include <assert.h>
+#include "glxclient.h"
+#include "apple_glx.h"
+#include "appledri.h"
+#include "apple_glx_drawable.h"
+
+static bool surface_make_current(struct apple_glx_context *ac,
+                                 struct apple_glx_drawable *d);
+
+static void surface_destroy(Display * dpy, struct apple_glx_drawable *d);
+
+
+static struct apple_glx_drawable_callbacks callbacks = {
+   .type = APPLE_GLX_DRAWABLE_SURFACE,
+   .make_current = surface_make_current,
+   .destroy = surface_destroy
+};
+
+static void
+update_viewport_and_scissor(Display * dpy, GLXDrawable drawable)
+{
+   Window root;
+   int x, y;
+   unsigned int width = 0, height = 0, bd, depth;
+
+   XGetGeometry(dpy, drawable, &root, &x, &y, &width, &height, &bd, &depth);
+
+   glViewport(0, 0, width, height);
+   glScissor(0, 0, width, height);
+}
+
+static bool
+surface_make_current(struct apple_glx_context *ac,
+                     struct apple_glx_drawable *d)
+{
+   struct apple_glx_surface *s = &d->types.surface;
+   xp_error error;
+
+   assert(APPLE_GLX_DRAWABLE_SURFACE == d->type);
+
+   apple_glx_diagnostic("%s: ac->context_obj %p s->surface_id %u\n",
+                        __func__, (void *) ac->context_obj, s->surface_id);
+
+   error = xp_attach_gl_context(ac->context_obj, s->surface_id);
+
+   if (error) {
+      fprintf(stderr, "error: xp_attach_gl_context returned: %d\n", error);
+      return true;
+   }
+
+
+   if (!ac->made_current) {
+      /* 
+       * The first time a new context is made current the glViewport
+       * and glScissor should be updated.
+       */
+      update_viewport_and_scissor(ac->drawable->display,
+                                  ac->drawable->drawable);
+      ac->made_current = true;
+   }
+
+   apple_glx_diagnostic("%s: drawable 0x%lx\n", __func__, d->drawable);
+
+   return false;
+}
+
+static void
+surface_destroy(Display * dpy, struct apple_glx_drawable *d)
+{
+   struct apple_glx_surface *s = &d->types.surface;
+
+   apple_glx_diagnostic("%s: s->surface_id %u\n", __func__, s->surface_id);
+
+   xp_error error = xp_destroy_surface(s->surface_id);
+
+   if (error) {
+      fprintf(stderr, "xp_destroy_surface error: %d\n", (int) error);
+   }
+
+   /* 
+    * Check if this surface destroy came from the surface being destroyed
+    * on the server.  If s->pending_destroy is true, then it did, and 
+    * we don't want to try to destroy the surface on the server.
+    */
+   if (!s->pending_destroy) {
+      /*
+       * Warning: this causes other routines to be called (potentially)
+       * from surface_notify_handler.  It's probably best to not have
+       * any locks at this point locked.
+       */
+      XAppleDRIDestroySurface(d->display, DefaultScreen(d->display),
+                              d->drawable);
+
+      apple_glx_diagnostic
+         ("%s: destroyed a surface for drawable 0x%lx uid %u\n", __func__,
+          d->drawable, s->uid);
+   }
+}
+
+/* Return true if an error occured. */
+static bool
+create_surface(Display * dpy, int screen, struct apple_glx_drawable *d)
+{
+   struct apple_glx_surface *s = &d->types.surface;
+   unsigned int key[2];
+   xp_client_id id;
+
+   id = apple_glx_get_client_id();
+   if (0 == id)
+      return true;
+
+   assert(None != d->drawable);
+
+   s->pending_destroy = false;
+
+   if (XAppleDRICreateSurface(dpy, screen, d->drawable, id, key, &s->uid)) {
+      xp_error error;
+
+      error = xp_import_surface(key, &s->surface_id);
+
+      if (error) {
+         fprintf(stderr, "error: xp_import_surface returned: %d\n", error);
+         return true;
+      }
+
+      apple_glx_diagnostic("%s: created a surface for drawable 0x%lx"
+                           " with uid %u\n", __func__, d->drawable, s->uid);
+      return false;             /*success */
+   }
+
+   return true;                 /* unable to create a surface. */
+}
+
+/* Return true if an error occured. */
+/* This returns a referenced object via resultptr. */
+bool
+apple_glx_surface_create(Display * dpy, int screen,
+                         GLXDrawable drawable,
+                         struct apple_glx_drawable ** resultptr)
+{
+   struct apple_glx_drawable *d;
+
+   if (apple_glx_drawable_create(dpy, screen, drawable, &d, &callbacks))
+      return true;
+
+   /* apple_glx_drawable_create creates a locked and referenced object. */
+
+   if (create_surface(dpy, screen, d)) {
+      d->unlock(d);
+      d->destroy(d);
+      return true;
+   }
+
+   *resultptr = d;
+
+   d->unlock(d);
+
+   return false;
+}
+
+/*
+ * All surfaces are reference counted, and surfaces are only created
+ * when the window is made current.  When all contexts no longer reference
+ * a surface drawable the apple_glx_drawable gets destroyed, and thus
+ * its surface is destroyed.  
+ *
+ * However we can make the destruction occur a bit sooner by setting
+ * pending_destroy, which is then checked for in glViewport by
+ * apple_glx_context_update.
+ */
+void
+apple_glx_surface_destroy(unsigned int uid)
+{
+   struct apple_glx_drawable *d;
+
+   d = apple_glx_drawable_find_by_uid(uid, APPLE_GLX_DRAWABLE_REFERENCE
+                                      | APPLE_GLX_DRAWABLE_LOCK);
+
+   if (d) {
+      d->types.surface.pending_destroy = true;
+      d->release(d);
+      /* 
+       * We release 2 references to the surface.  One was acquired by
+       * the find, and the other was leftover from a context, or 
+       * the surface being displayed, so the destroy() will decrease it
+       * once more.
+       *
+       * If the surface is in a context, it will take one d->destroy(d);
+       * to actually destroy it when the pending_destroy is processed
+       * by a glViewport callback (see apple_glx_context_update()).
+       */
+      d->destroy(d);
+
+      d->unlock(d);
+   }
+}
diff --git a/src/glx/apple/apple_visual.c b/src/glx/apple/apple_visual.c
new file mode 100644 (file)
index 0000000..da5aa05
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <GL/gl.h>
+
+/* <rdar://problem/6953344> */
+#define glTexImage1D glTexImage1D_OSX
+#define glTexImage2D glTexImage2D_OSX
+#define glTexImage3D glTexImage3D_OSX
+#include <OpenGL/OpenGL.h>
+#include <OpenGL/CGLContext.h>
+#include <OpenGL/CGLRenderers.h>
+#undef glTexImage1D
+#undef glTexImage2D
+#undef glTexImage3D
+
+#include "apple_cgl.h"
+#include "apple_visual.h"
+#include "apple_glx.h"
+#include "glcontextmodes.h"
+
+enum
+{
+   MAX_ATTR = 60
+};
+
+/*mode is a __GlcontextModes*/
+void
+apple_visual_create_pfobj(CGLPixelFormatObj * pfobj, const void *mode,
+                          bool * double_buffered, bool * uses_stereo,
+                          bool offscreen)
+{
+   CGLPixelFormatAttribute attr[MAX_ATTR];
+   const __GLcontextModes *c = mode;
+   int numattr = 0;
+   GLint vsref = 0;
+   CGLError error = 0;
+
+   if (offscreen) {
+      apple_glx_diagnostic
+         ("offscreen rendering enabled.  Using kCGLPFAOffScreen\n");
+
+      attr[numattr++] = kCGLPFAOffScreen;
+      attr[numattr++] = kCGLPFAColorSize;
+      attr[numattr++] = 32;
+   }
+   else if (getenv("LIBGL_ALWAYS_SOFTWARE") != NULL) {
+      apple_glx_diagnostic
+         ("Software rendering requested.  Using kCGLRendererGenericFloatID.\n");
+      attr[numattr++] = kCGLPFARendererID;
+      attr[numattr++] = kCGLRendererGenericFloatID;
+   }
+   else if (getenv("LIBGL_ALLOW_SOFTWARE") != NULL) {
+      apple_glx_diagnostic
+         ("Software rendering is not being excluded.  Not using kCGLPFAAccelerated.\n");
+   }
+   else {
+      attr[numattr++] = kCGLPFAAccelerated;
+   }
+
+   /* 
+    * The program chose a config based on the fbconfigs or visuals.
+    * Those are based on the attributes from CGL, so we probably
+    * do want the closest match for the color, depth, and accum.
+    */
+   attr[numattr++] = kCGLPFAClosestPolicy;
+
+   if (c->stereoMode) {
+      attr[numattr++] = kCGLPFAStereo;
+      *uses_stereo = true;
+   }
+   else {
+      *uses_stereo = false;
+   }
+
+   if (c->doubleBufferMode) {
+      attr[numattr++] = kCGLPFADoubleBuffer;
+      *double_buffered = true;
+   }
+   else {
+      *double_buffered = false;
+   }
+
+   attr[numattr++] = kCGLPFAColorSize;
+   attr[numattr++] = c->redBits + c->greenBits + c->blueBits;
+   attr[numattr++] = kCGLPFAAlphaSize;
+   attr[numattr++] = c->alphaBits;
+
+   if ((c->accumRedBits + c->accumGreenBits + c->accumBlueBits) > 0) {
+      attr[numattr++] = kCGLPFAAccumSize;
+      attr[numattr++] = c->accumRedBits + c->accumGreenBits +
+         c->accumBlueBits + c->accumAlphaBits;
+   }
+
+   if (c->depthBits > 0) {
+      attr[numattr++] = kCGLPFADepthSize;
+      attr[numattr++] = c->depthBits;
+   }
+
+   if (c->stencilBits > 0) {
+      attr[numattr++] = kCGLPFAStencilSize;
+      attr[numattr++] = c->stencilBits;
+   }
+
+   if (c->sampleBuffers > 0) {
+      attr[numattr++] = kCGLPFAMultisample;
+      attr[numattr++] = kCGLPFASampleBuffers;
+      attr[numattr++] = c->sampleBuffers;
+      attr[numattr++] = kCGLPFASamples;
+      attr[numattr++] = c->samples;
+   }
+
+   attr[numattr++] = 0;
+
+   assert(numattr < MAX_ATTR);
+
+   error = apple_cgl.choose_pixel_format(attr, pfobj, &vsref);
+
+   if (error) {
+      fprintf(stderr, "error: %s\n", apple_cgl.error_string(error));
+      abort();
+   }
+}
diff --git a/src/glx/apple/apple_visual.h b/src/glx/apple/apple_visual.h
new file mode 100644 (file)
index 0000000..ebfafa3
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ Copyright (c) 2008 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#ifndef APPLE_VISUAL_H
+#define APPLE_VISUAL_H
+
+#include <stdbool.h>
+#include <OpenGL/CGLTypes.h>
+
+/* mode is expected to be of type __GLcontextModes. */
+void apple_visual_create_pfobj(CGLPixelFormatObj * pfobj, const void *mode,
+                               bool * double_buffered, bool * uses_stereo,
+                               bool offscreen);
+
+#endif
diff --git a/src/glx/apple/apple_xgl_api_additional.c b/src/glx/apple/apple_xgl_api_additional.c
new file mode 100644 (file)
index 0000000..7d40afe
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#define GL_GLEXT_PROTOTYPES
+#include <GL/gl.h>
+
+GLAPI void APIENTRY glTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei
+ depth, GLint border, GLenum format, GLenum type, const void * pixels) {
+         glTexImage3D(target, level, (GLint)internalformat, width, height, depth, border, format, type, pixels);
+}
+
diff --git a/src/glx/apple/apple_xgl_api_read.c b/src/glx/apple/apple_xgl_api_read.c
new file mode 100644 (file)
index 0000000..0798f45
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+/*
+ * This file works with the glXMakeContextCurrent readable drawable. 
+ *
+ * The way it works is by swapping the currentDrawable for the currentReadable
+ * drawable if they are different.
+ */
+#include <stdbool.h>
+#include "glxclient.h"
+#include "apple_glx_context.h"
+#include "apple_xgl_api.h"
+
+extern struct apple_xgl_api __gl_api;
+
+struct apple_xgl_saved_state
+{
+   bool swapped;
+};
+
+static void
+SetRead(struct apple_xgl_saved_state *saved)
+{
+   GLXContext gc = __glXGetCurrentContext();
+
+   /*
+    * By default indicate that the state was not swapped, so that UnsetRead
+    * functions correctly.
+    */
+   saved->swapped = false;
+
+   /* 
+    * If the readable drawable isn't the same as the drawable then 
+    * the user has requested a readable drawable with glXMakeContextCurrent().
+    * We emulate this behavior by switching the current drawable.
+    */
+   if (None != gc->currentReadable
+       && gc->currentReadable != gc->currentDrawable) {
+      Display *dpy = glXGetCurrentDisplay();
+
+      saved->swapped = true;
+
+      if (apple_glx_make_current_context(dpy, gc->driContext, gc->driContext,
+                                         gc->currentReadable)) {
+         /* An error occurred, so try to restore the old context state. */
+         (void) apple_glx_make_current_context(dpy, gc->driContext, gc->driContext,
+                                               gc->currentDrawable);
+         saved->swapped = false;
+      }
+   }
+}
+
+static void
+UnsetRead(struct apple_xgl_saved_state *saved)
+{
+   if (saved->swapped) {
+      GLXContext gc = __glXGetCurrentContext();
+      Display *dpy = glXGetCurrentDisplay();
+
+      if (apple_glx_make_current_context(dpy, gc->driContext, gc->driContext,
+                                         gc->currentDrawable)) {
+         /*
+          * An error occurred restoring the drawable.
+          * It's unclear what to do about that. 
+          */
+      }
+   }
+}
+
+void
+glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
+             GLenum format, GLenum type, void *pixels)
+{
+   struct apple_xgl_saved_state saved;
+
+   SetRead(&saved);
+
+   __gl_api.ReadPixels(x, y, width, height, format, type, pixels);
+
+   UnsetRead(&saved);
+}
+
+void
+glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)
+{
+   struct apple_xgl_saved_state saved;
+
+   SetRead(&saved);
+
+   __gl_api.CopyPixels(x, y, width, height, type);
+
+   UnsetRead(&saved);
+}
+
+void
+glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y,
+                 GLsizei width)
+{
+   struct apple_xgl_saved_state saved;
+
+   SetRead(&saved);
+
+   __gl_api.CopyColorTable(target, internalformat, x, y, width);
+
+   UnsetRead(&saved);
+}
diff --git a/src/glx/apple/apple_xgl_api_stereo.c b/src/glx/apple/apple_xgl_api_stereo.c
new file mode 100644 (file)
index 0000000..64a15f7
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+/* This should be removed once stereo hardware bugs are fixed
+ * <rdar://problem/6729006>
+ */
+
+#include <stdbool.h>
+
+#define GL_GLEXT_PROTOTYPES
+#include <GL/gl.h>
+#include <GL/glext.h>
+
+#include "glxclient.h"
+#include "apple_glx_context.h"
+#include "apple_xgl_api.h"
+
+extern struct apple_xgl_api __gl_api;
+/* 
+ * These are special functions for stereoscopic support 
+ * differences in MacOS X.
+ */
+void
+glDrawBuffer(GLenum mode)
+{
+   GLXContext gc = glXGetCurrentContext();
+
+   if (gc && apple_glx_context_uses_stereo(gc->driContext)) {
+      GLenum buf[2];
+      GLsizei n = 0;
+
+      switch (mode) {
+      case GL_BACK:
+         buf[0] = GL_BACK_LEFT;
+         buf[1] = GL_BACK_RIGHT;
+         n = 2;
+         break;
+      case GL_FRONT:
+         buf[0] = GL_FRONT_LEFT;
+         buf[1] = GL_FRONT_RIGHT;
+         n = 2;
+         break;
+
+      default:
+         buf[0] = mode;
+         n = 1;
+         break;
+      }
+
+      __gl_api.DrawBuffers(n, buf);
+   }
+   else {
+      __gl_api.DrawBuffer(mode);
+   }
+}
+
+
+void
+glDrawBuffers(GLsizei n, const GLenum * bufs)
+{
+   GLXContext gc = glXGetCurrentContext();
+
+   if (gc && apple_glx_context_uses_stereo(gc->driContext)) {
+      GLenum newbuf[n + 2];
+      GLsizei i, outi = 0;
+      bool have_back = false;
+      bool have_front = false;
+
+      for (i = 0; i < n; ++i) {
+         if (GL_BACK == bufs[i]) {
+            have_back = true;
+         }
+         else if (GL_FRONT == bufs[i]) {
+            have_back = true;
+         }
+         else {
+            newbuf[outi++] = bufs[i];
+         }
+      }
+
+      if (have_back) {
+         newbuf[outi++] = GL_BACK_LEFT;
+         newbuf[outi++] = GL_BACK_RIGHT;
+      }
+
+      if (have_front) {
+         newbuf[outi++] = GL_FRONT_LEFT;
+         newbuf[outi++] = GL_FRONT_RIGHT;
+      }
+
+      __gl_api.DrawBuffers(outi, newbuf);
+   }
+   else {
+      __gl_api.DrawBuffers(n, bufs);
+   }
+}
+
+void
+glDrawBuffersARB(GLsizei n, const GLenum * bufs)
+{
+   glDrawBuffers(n, bufs);
+}
diff --git a/src/glx/apple/apple_xgl_api_viewport.c b/src/glx/apple/apple_xgl_api_viewport.c
new file mode 100644 (file)
index 0000000..e39ab15
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include "glxclient.h"
+#include "apple_glx_context.h"
+#include "apple_xgl_api.h"
+
+extern struct apple_xgl_api __gl_api;
+
+void
+glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   GLXContext gc = __glXGetCurrentContext();
+   Display *dpy = glXGetCurrentDisplay();
+
+   if (gc && gc->driContext)
+      apple_glx_context_update(dpy, gc->driContext);
+
+   __gl_api.Viewport(x, y, width, height);
+}
diff --git a/src/glx/apple/appledri.c b/src/glx/apple/appledri.c
new file mode 100644 (file)
index 0000000..4f2e8f9
--- /dev/null
@@ -0,0 +1,452 @@
+/* $XFree86: xc/lib/GL/dri/XF86dri.c,v 1.12 2001/08/27 17:40:57 dawes Exp $ */
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright (c) 2002, 2008 Apple Computer, 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 PRECISION INSIGHT 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.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ *   Kevin E. Martin <martin@valinux.com>
+ *   Jens Owen <jens@valinux.com>
+ *   Rickard E. (Rik) Faith <faith@valinux.com>
+ *
+ */
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD */
+
+#define NEED_EVENTS
+#define NEED_REPLIES
+#include <X11/Xlibint.h>
+#include "appledristr.h"
+#include <X11/extensions/Xext.h>
+#include <X11/extensions/extutil.h>
+#include <stdio.h>
+
+static XExtensionInfo _appledri_info_data;
+static XExtensionInfo *appledri_info = &_appledri_info_data;
+static char *appledri_extension_name = APPLEDRINAME;
+
+#define AppleDRICheckExtension(dpy,i,val) \
+  XextCheckExtension (dpy, i, appledri_extension_name, val)
+
+/*****************************************************************************
+ *                                                                           *
+ *                        private utility routines                          *
+ *                                                                           *
+ *****************************************************************************/
+
+static int close_display(Display * dpy, XExtCodes * extCodes);
+static Bool wire_to_event(Display * dpy, XEvent * re, xEvent * event);
+
+static /* const */ XExtensionHooks appledri_extension_hooks = {
+   NULL,                        /* create_gc */
+   NULL,                        /* copy_gc */
+   NULL,                        /* flush_gc */
+   NULL,                        /* free_gc */
+   NULL,                        /* create_font */
+   NULL,                        /* free_font */
+   close_display,               /* close_display */
+   wire_to_event,               /* wire_to_event */
+   NULL,                        /* event_to_wire */
+   NULL,                        /* error */
+   NULL,                        /* error_string */
+};
+
+static
+XEXT_GENERATE_FIND_DISPLAY(find_display, appledri_info,
+                           appledri_extension_name,
+                           &appledri_extension_hooks,
+                           AppleDRINumberEvents, NULL)
+
+     static XEXT_GENERATE_CLOSE_DISPLAY(close_display, appledri_info)
+
+     static void (*surface_notify_handler) ();
+
+     void *XAppleDRISetSurfaceNotifyHandler(void (*fun) ())
+{
+   void *old = surface_notify_handler;
+   surface_notify_handler = fun;
+   return old;
+}
+
+static Bool
+wire_to_event(Display *dpy, XEvent *re, xEvent *event)
+{
+   XExtDisplayInfo *info = find_display(dpy);
+   xAppleDRINotifyEvent *sevent;
+
+   AppleDRICheckExtension(dpy, info, False);
+
+   switch ((event->u.u.type & 0x7f) - info->codes->first_event) {
+   case AppleDRISurfaceNotify:
+      sevent = (xAppleDRINotifyEvent *) event;
+      if (surface_notify_handler != NULL) {
+         (*surface_notify_handler) (dpy, (unsigned int) sevent->arg,
+                                    (int) sevent->kind);
+      }
+      return False;
+   }
+   return False;
+}
+
+/*****************************************************************************
+ *                                                                           *
+ *                 public Apple-DRI Extension routines                      *
+ *                                                                           *
+ *****************************************************************************/
+
+#if 0
+#include <stdio.h>
+#define TRACE(msg)  fprintf(stderr, "AppleDRI%s\n", msg);
+#else
+#define TRACE(msg)
+#endif
+
+
+Bool
+XAppleDRIQueryExtension(dpy, event_basep, error_basep)
+     Display *dpy;
+     int *event_basep, *error_basep;
+{
+   XExtDisplayInfo *info = find_display(dpy);
+
+   TRACE("QueryExtension...");
+   if (XextHasExtension(info)) {
+      *event_basep = info->codes->first_event;
+      *error_basep = info->codes->first_error;
+      TRACE("QueryExtension... return True");
+      return True;
+   }
+   else {
+      TRACE("QueryExtension... return False");
+      return False;
+   }
+}
+
+Bool
+XAppleDRIQueryVersion(dpy, majorVersion, minorVersion, patchVersion)
+     Display *dpy;
+     int *majorVersion;
+     int *minorVersion;
+     int *patchVersion;
+{
+   XExtDisplayInfo *info = find_display(dpy);
+   xAppleDRIQueryVersionReply rep;
+   xAppleDRIQueryVersionReq *req;
+
+   TRACE("QueryVersion...");
+   AppleDRICheckExtension(dpy, info, False);
+
+   LockDisplay(dpy);
+   GetReq(AppleDRIQueryVersion, req);
+   req->reqType = info->codes->major_opcode;
+   req->driReqType = X_AppleDRIQueryVersion;
+   if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
+      UnlockDisplay(dpy);
+      SyncHandle();
+      TRACE("QueryVersion... return False");
+      return False;
+   }
+   *majorVersion = rep.majorVersion;
+   *minorVersion = rep.minorVersion;
+   *patchVersion = rep.patchVersion;
+   UnlockDisplay(dpy);
+   SyncHandle();
+   TRACE("QueryVersion... return True");
+   return True;
+}
+
+Bool
+XAppleDRIQueryDirectRenderingCapable(dpy, screen, isCapable)
+     Display *dpy;
+     int screen;
+     Bool *isCapable;
+{
+   XExtDisplayInfo *info = find_display(dpy);
+   xAppleDRIQueryDirectRenderingCapableReply rep;
+   xAppleDRIQueryDirectRenderingCapableReq *req;
+
+   TRACE("QueryDirectRenderingCapable...");
+   AppleDRICheckExtension(dpy, info, False);
+
+   LockDisplay(dpy);
+   GetReq(AppleDRIQueryDirectRenderingCapable, req);
+   req->reqType = info->codes->major_opcode;
+   req->driReqType = X_AppleDRIQueryDirectRenderingCapable;
+   req->screen = screen;
+   if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
+      UnlockDisplay(dpy);
+      SyncHandle();
+      TRACE("QueryDirectRenderingCapable... return False");
+      return False;
+   }
+   *isCapable = rep.isCapable;
+   UnlockDisplay(dpy);
+   SyncHandle();
+   TRACE("QueryDirectRenderingCapable... return True");
+   return True;
+}
+
+Bool
+XAppleDRIAuthConnection(dpy, screen, magic)
+     Display *dpy;
+     int screen;
+     unsigned int magic;
+{
+   XExtDisplayInfo *info = find_display(dpy);
+   xAppleDRIAuthConnectionReq *req;
+   xAppleDRIAuthConnectionReply rep;
+
+   TRACE("AuthConnection...");
+   AppleDRICheckExtension(dpy, info, False);
+
+   LockDisplay(dpy);
+   GetReq(AppleDRIAuthConnection, req);
+   req->reqType = info->codes->major_opcode;
+   req->driReqType = X_AppleDRIAuthConnection;
+   req->screen = screen;
+   req->magic = magic;
+   rep.authenticated = 0;
+   if (!_XReply(dpy, (xReply *) & rep, 0, xFalse) || !rep.authenticated) {
+      UnlockDisplay(dpy);
+      SyncHandle();
+      TRACE("AuthConnection... return False");
+      return False;
+   }
+   UnlockDisplay(dpy);
+   SyncHandle();
+   TRACE("AuthConnection... return True");
+   return True;
+}
+
+Bool
+XAppleDRICreateSurface(dpy, screen, drawable, client_id, key, uid)
+     Display *dpy;
+     int screen;
+     Drawable drawable;
+     unsigned int client_id;
+     unsigned int *key;
+     unsigned int *uid;
+{
+   XExtDisplayInfo *info = find_display(dpy);
+   xAppleDRICreateSurfaceReply rep;
+   xAppleDRICreateSurfaceReq *req;
+
+   TRACE("CreateSurface...");
+   AppleDRICheckExtension(dpy, info, False);
+
+   LockDisplay(dpy);
+   GetReq(AppleDRICreateSurface, req);
+   req->reqType = info->codes->major_opcode;
+   req->driReqType = X_AppleDRICreateSurface;
+   req->screen = screen;
+   req->drawable = drawable;
+   req->client_id = client_id;
+   rep.key_0 = rep.key_1 = rep.uid = 0;
+   if (!_XReply(dpy, (xReply *) & rep, 0, xFalse) || !rep.key_0) {
+      UnlockDisplay(dpy);
+      SyncHandle();
+      TRACE("CreateSurface... return False");
+      return False;
+   }
+   key[0] = rep.key_0;
+   key[1] = rep.key_1;
+   *uid = rep.uid;
+   UnlockDisplay(dpy);
+   SyncHandle();
+   TRACE("CreateSurface... return True");
+   return True;
+}
+
+Bool
+XAppleDRIDestroySurface(dpy, screen, drawable)
+     Display *dpy;
+     int screen;
+     Drawable drawable;
+{
+   XExtDisplayInfo *info = find_display(dpy);
+   xAppleDRIDestroySurfaceReq *req;
+
+   TRACE("DestroySurface...");
+   AppleDRICheckExtension(dpy, info, False);
+
+   LockDisplay(dpy);
+   GetReq(AppleDRIDestroySurface, req);
+   req->reqType = info->codes->major_opcode;
+   req->driReqType = X_AppleDRIDestroySurface;
+   req->screen = screen;
+   req->drawable = drawable;
+   UnlockDisplay(dpy);
+   SyncHandle();
+   TRACE("DestroySurface... return True");
+   return True;
+}
+
+Bool
+XAppleDRICreateSharedBuffer(Display * dpy, int screen, Drawable drawable,
+                            Bool doubleSwap, char *path, size_t pathlen,
+                            int *width, int *height)
+{
+   XExtDisplayInfo *info = find_display(dpy);
+   xAppleDRICreateSharedBufferReq *req;
+   xAppleDRICreateSharedBufferReply rep;
+
+   AppleDRICheckExtension(dpy, info, False);
+
+   LockDisplay(dpy);
+   GetReq(AppleDRICreateSharedBuffer, req);
+   req->reqType = info->codes->major_opcode;
+   req->driReqType = X_AppleDRICreateSharedBuffer;
+   req->screen = screen;
+   req->drawable = drawable;
+   req->doubleSwap = doubleSwap;
+
+
+   if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
+      puts("REPLY ERROR");
+
+      UnlockDisplay(dpy);
+      SyncHandle();
+      return False;
+   }
+
+   printf("rep.stringLength %d\n", (int) rep.stringLength);
+
+   if (rep.stringLength > 0 && rep.stringLength <= pathlen) {
+      _XReadPad(dpy, path, rep.stringLength);
+
+      printf("path: %s\n", path);
+
+      *width = rep.width;
+      *height = rep.height;
+
+      UnlockDisplay(dpy);
+      SyncHandle();
+      return True;
+   }
+
+   UnlockDisplay(dpy);
+   SyncHandle();
+
+   return False;
+}
+
+Bool
+XAppleDRISwapBuffers(Display * dpy, int screen, Drawable drawable)
+{
+   XExtDisplayInfo *info = find_display(dpy);
+   xAppleDRISwapBuffersReq *req;
+
+   AppleDRICheckExtension(dpy, info, False);
+
+   LockDisplay(dpy);
+   GetReq(AppleDRISwapBuffers, req);
+   req->reqType = info->codes->major_opcode;
+   req->driReqType = X_AppleDRISwapBuffers;
+   req->screen = screen;
+   req->drawable = drawable;
+   UnlockDisplay(dpy);
+   SyncHandle();
+
+   return True;
+}
+
+Bool
+XAppleDRICreatePixmap(Display * dpy, int screen, Drawable drawable,
+                      int *width, int *height, int *pitch, int *bpp,
+                      size_t * size, char *bufname, size_t bufnamesize)
+{
+   XExtDisplayInfo *info = find_display(dpy);
+   xAppleDRICreatePixmapReq *req;
+   xAppleDRICreatePixmapReply rep;
+
+   AppleDRICheckExtension(dpy, info, False);
+
+   LockDisplay(dpy);
+   GetReq(AppleDRICreatePixmap, req);
+   req->reqType = info->codes->major_opcode;
+   req->driReqType = X_AppleDRICreatePixmap;
+   req->screen = screen;
+   req->drawable = drawable;
+
+   if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
+      UnlockDisplay(dpy);
+      SyncHandle();
+      return False;
+   }
+
+   /*
+      printf("rep.stringLength %d\n", (int) rep.stringLength);
+    */
+
+   if (rep.stringLength > 0 && rep.stringLength <= bufnamesize) {
+      _XReadPad(dpy, bufname, rep.stringLength);
+
+      printf("path: %s\n", bufname);
+
+      *width = rep.width;
+      *height = rep.height;
+      *pitch = rep.pitch;
+      *bpp = rep.bpp;
+      *size = rep.size;
+
+      UnlockDisplay(dpy);
+      SyncHandle();
+      return True;
+   }
+   else if (rep.stringLength > 0) {
+      _XEatData(dpy, rep.stringLength);
+   }
+
+   UnlockDisplay(dpy);
+   SyncHandle();
+
+   return True;
+}
+
+/* 
+ * Call it a drawable, because we really don't know what it is
+ * until it reaches the server, and we should keep that in mind.
+ */
+Bool
+XAppleDRIDestroyPixmap(Display * dpy, Pixmap drawable)
+{
+   XExtDisplayInfo *info = find_display(dpy);
+   xAppleDRIDestroyPixmapReq *req;
+
+   AppleDRICheckExtension(dpy, info, False);
+
+   LockDisplay(dpy);
+   GetReq(AppleDRIDestroyPixmap, req);
+   req->reqType = info->codes->major_opcode;
+   req->driReqType = X_AppleDRIDestroyPixmap;
+   req->drawable = drawable;
+   UnlockDisplay(dpy);
+   SyncHandle();
+
+   return True;
+}
diff --git a/src/glx/apple/appledri.h b/src/glx/apple/appledri.h
new file mode 100644 (file)
index 0000000..0108378
--- /dev/null
@@ -0,0 +1,124 @@
+/* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.7 2000/12/07 20:26:02 dawes Exp $ */
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright (c) 2002, 2008, 2009 Apple Computer, 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 PRECISION INSIGHT 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.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ *   Kevin E. Martin <martin@valinux.com>
+ *   Jens Owen <jens@valinux.com>
+ *   Rickard E. (Rik) Faith <faith@valinux.com>
+ *
+ */
+
+#ifndef _APPLEDRI_H_
+#define _APPLEDRI_H_
+
+#include <X11/Xlib.h>
+#include <X11/Xfuncproto.h>
+
+#define X_AppleDRIQueryVersion                 0
+#define X_AppleDRIQueryDirectRenderingCapable  1
+#define X_AppleDRICreateSurface                        2
+#define X_AppleDRIDestroySurface               3
+#define X_AppleDRIAuthConnection                4
+#define X_AppleDRICreateSharedBuffer            5
+#define X_AppleDRISwapBuffers                   6
+#define X_AppleDRICreatePixmap                  7
+#define X_AppleDRIDestroyPixmap                 8
+
+/* Requests up to and including 18 were used in a previous version */
+
+/* Events */
+#define AppleDRIObsoleteEvent1         0
+#define AppleDRIObsoleteEvent2         1
+#define AppleDRIObsoleteEvent3         2
+#define AppleDRISurfaceNotify          3
+#define AppleDRINumberEvents           4
+
+/* Errors */
+#define AppleDRIClientNotLocal         0
+#define AppleDRIOperationNotSupported  1
+#define AppleDRINumberErrors           (AppleDRIOperationNotSupported + 1)
+
+/* Kinds of SurfaceNotify events: */
+#define AppleDRISurfaceNotifyChanged   0
+#define AppleDRISurfaceNotifyDestroyed 1
+
+#ifndef _APPLEDRI_SERVER_
+
+typedef struct
+{
+   int type;                    /* of event */
+   unsigned long serial;        /* # of last request processed by server */
+   Bool send_event;             /* true if this came frome a SendEvent request */
+   Display *display;            /* Display the event was read from */
+   Window window;               /* window of event */
+   Time time;                   /* server timestamp when event happened */
+   int kind;                    /* subtype of event */
+   int arg;
+} XAppleDRINotifyEvent;
+
+_XFUNCPROTOBEGIN
+   Bool XAppleDRIQueryExtension(Display * dpy, int *event_base,
+                                int *error_base);
+
+Bool XAppleDRIQueryVersion(Display * dpy, int *majorVersion,
+                           int *minorVersion, int *patchVersion);
+
+Bool XAppleDRIQueryDirectRenderingCapable(Display * dpy, int screen,
+                                          Bool * isCapable);
+
+void *XAppleDRISetSurfaceNotifyHandler(void (*fun) (Display * dpy,
+                                                    unsigned uid, int kind));
+
+Bool XAppleDRIAuthConnection(Display * dpy, int screen, unsigned int magic);
+
+Bool XAppleDRICreateSurface(Display * dpy, int screen, Drawable drawable,
+                            unsigned int client_id, unsigned int key[2],
+                            unsigned int *uid);
+
+Bool XAppleDRIDestroySurface(Display * dpy, int screen, Drawable drawable);
+
+Bool XAppleDRISynchronizeSurfaces(Display * dpy);
+
+Bool XAppleDRICreateSharedBuffer(Display * dpy, int screen, Drawable drawable,
+                                 Bool doubleSwap, char *path, size_t pathlen,
+                                 int *width, int *height);
+
+Bool XAppleDRISwapBuffers(Display * dpy, int screen, Drawable drawable);
+
+Bool XAppleDRICreatePixmap(Display * dpy, int screen, Drawable drawable,
+                           int *width, int *height, int *pitch, int *bpp,
+                           size_t * size, char *bufname, size_t bufnamesize);
+
+Bool XAppleDRIDestroyPixmap(Display * dpy, Pixmap pixmap);
+
+_XFUNCPROTOEND
+#endif /* _APPLEDRI_SERVER_ */
+#endif /* _APPLEDRI_H_ */
diff --git a/src/glx/apple/appledristr.h b/src/glx/apple/appledristr.h
new file mode 100644 (file)
index 0000000..b5ffe5b
--- /dev/null
@@ -0,0 +1,266 @@
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright (c) 2002, 2008, 2009 Apple Computer, 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 PRECISION INSIGHT 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.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ *   Kevin E. Martin <martin@valinux.com>
+ *   Jens Owen <jens@valinux.com>
+ *   Rickard E. (Rik) Fiath <faith@valinux.com>
+ *
+ */
+
+#ifndef _APPLEDRISTR_H_
+#define _APPLEDRISTR_H_
+
+#include "appledri.h"
+
+#define APPLEDRINAME "Apple-DRI"
+
+#define APPLE_DRI_MAJOR_VERSION        1       /* current version numbers */
+#define APPLE_DRI_MINOR_VERSION        0
+#define APPLE_DRI_PATCH_VERSION        0
+
+typedef struct _AppleDRIQueryVersion
+{
+   CARD8 reqType;               /* always DRIReqCode */
+   CARD8 driReqType;            /* always X_DRIQueryVersion */
+   CARD16 length B16;
+} xAppleDRIQueryVersionReq;
+#define sz_xAppleDRIQueryVersionReq    4
+
+typedef struct
+{
+   BYTE type;                   /* X_Reply */
+   BOOL pad1;
+   CARD16 sequenceNumber B16;
+   CARD32 length B32;
+   CARD16 majorVersion B16;     /* major version of DRI protocol */
+   CARD16 minorVersion B16;     /* minor version of DRI protocol */
+   CARD32 patchVersion B32;     /* patch version of DRI protocol */
+   CARD32 pad3 B32;
+   CARD32 pad4 B32;
+   CARD32 pad5 B32;
+   CARD32 pad6 B32;
+} xAppleDRIQueryVersionReply;
+#define sz_xAppleDRIQueryVersionReply  32
+
+typedef struct _AppleDRIQueryDirectRenderingCapable
+{
+   CARD8 reqType;               /* always DRIReqCode */
+   CARD8 driReqType;            /* X_DRIQueryDirectRenderingCapable */
+   CARD16 length B16;
+   CARD32 screen B32;
+} xAppleDRIQueryDirectRenderingCapableReq;
+#define sz_xAppleDRIQueryDirectRenderingCapableReq     8
+
+typedef struct
+{
+   BYTE type;                   /* X_Reply */
+   BOOL pad1;
+   CARD16 sequenceNumber B16;
+   CARD32 length B32;
+   BOOL isCapable;
+   BOOL pad2;
+   BOOL pad3;
+   BOOL pad4;
+   CARD32 pad5 B32;
+   CARD32 pad6 B32;
+   CARD32 pad7 B32;
+   CARD32 pad8 B32;
+   CARD32 pad9 B32;
+} xAppleDRIQueryDirectRenderingCapableReply;
+#define sz_xAppleDRIQueryDirectRenderingCapableReply   32
+
+typedef struct _AppleDRIAuthConnection
+{
+   CARD8 reqType;               /* always DRIReqCode */
+   CARD8 driReqType;            /* always X_DRICloseConnection */
+   CARD16 length B16;
+   CARD32 screen B32;
+   CARD32 magic B32;
+} xAppleDRIAuthConnectionReq;
+#define sz_xAppleDRIAuthConnectionReq  12
+
+typedef struct
+{
+   BYTE type;
+   BOOL pad1;
+   CARD16 sequenceNumber B16;
+   CARD32 length B32;
+   CARD32 authenticated B32;
+   CARD32 pad2 B32;
+   CARD32 pad3 B32;
+   CARD32 pad4 B32;
+   CARD32 pad5 B32;
+   CARD32 pad6 B32;
+} xAppleDRIAuthConnectionReply;
+#define zx_xAppleDRIAuthConnectionReply  32
+
+typedef struct _AppleDRICreateSurface
+{
+   CARD8 reqType;               /* always DRIReqCode */
+   CARD8 driReqType;            /* always X_DRICreateSurface */
+   CARD16 length B16;
+   CARD32 screen B32;
+   CARD32 drawable B32;
+   CARD32 client_id B32;
+} xAppleDRICreateSurfaceReq;
+#define sz_xAppleDRICreateSurfaceReq   16
+
+typedef struct
+{
+   BYTE type;                   /* X_Reply */
+   BOOL pad1;
+   CARD16 sequenceNumber B16;
+   CARD32 length B32;
+   CARD32 key_0 B32;
+   CARD32 key_1 B32;
+   CARD32 uid B32;
+   CARD32 pad4 B32;
+   CARD32 pad5 B32;
+   CARD32 pad6 B32;
+} xAppleDRICreateSurfaceReply;
+#define sz_xAppleDRICreateSurfaceReply 32
+
+typedef struct _AppleDRIDestroySurface
+{
+   CARD8 reqType;               /* always DRIReqCode */
+   CARD8 driReqType;            /* always X_DRIDestroySurface */
+   CARD16 length B16;
+   CARD32 screen B32;
+   CARD32 drawable B32;
+} xAppleDRIDestroySurfaceReq;
+#define sz_xAppleDRIDestroySurfaceReq  12
+
+typedef struct _AppleDRINotify
+{
+   BYTE type;                   /* always eventBase + event type */
+   BYTE kind;
+   CARD16 sequenceNumber B16;
+   CARD32 time B32;             /* time of change */
+   CARD32 pad1 B32;
+   CARD32 arg B32;
+   CARD32 pad3 B32;
+   CARD32 pad4 B32;
+   CARD32 pad5 B32;
+   CARD32 pad6 B32;
+} xAppleDRINotifyEvent;
+#define sz_xAppleDRINotifyEvent        32
+
+
+typedef struct
+{
+   CARD8 reqType;
+   CARD8 driReqType;
+   CARD16 length B16;
+   CARD32 screen B32;
+   CARD32 drawable B32;
+   BOOL doubleSwap;
+   CARD8 pad1, pad2, pad3;
+} xAppleDRICreateSharedBufferReq;
+
+#define sz_xAppleDRICreateSharedBufferReq 16
+
+typedef struct
+{
+   BYTE type;
+   BYTE data1;
+   CARD16 sequenceNumber B16;
+   CARD32 length B32;
+   CARD32 stringLength B32;     /* 0 on error */
+   CARD32 width B32;
+   CARD32 height B32;
+   CARD32 pad1 B32;
+   CARD32 pad2 B32;
+   CARD32 pad3 B32;
+} xAppleDRICreateSharedBufferReply;
+
+#define sz_xAppleDRICreateSharedBufferReply 32
+
+typedef struct
+{
+   CARD8 reqType;
+   CARD8 driReqType;
+   CARD16 length B16;
+   CARD32 screen B32;
+   CARD32 drawable B32;
+} xAppleDRISwapBuffersReq;
+
+#define sz_xAppleDRISwapBuffersReq 12
+
+typedef struct
+{
+   CARD8 reqType;               /*1 */
+   CARD8 driReqType;            /*2 */
+   CARD16 length B16;           /*4 */
+   CARD32 screen B32;           /*8 */
+   CARD32 drawable B32;         /*12 */
+} xAppleDRICreatePixmapReq;
+
+#define sz_xAppleDRICreatePixmapReq 12
+
+typedef struct
+{
+   BYTE type;                   /*1 */
+   BOOL pad1;                   /*2 */
+   CARD16 sequenceNumber B16;   /*4 */
+   CARD32 length B32;           /*8 */
+   CARD32 width B32;            /*12 */
+   CARD32 height B32;           /*16 */
+   CARD32 pitch B32;            /*20 */
+   CARD32 bpp B32;              /*24 */
+   CARD32 size B32;             /*28 */
+   CARD32 stringLength B32;     /*32 */
+} xAppleDRICreatePixmapReply;
+
+#define sz_xAppleDRICreatePixmapReply 32
+
+typedef struct
+{
+   CARD8 reqType;               /*1 */
+   CARD8 driReqType;            /*2 */
+   CARD16 length B16;           /*4 */
+   CARD32 drawable B32;         /*8 */
+} xAppleDRIDestroyPixmapReq;
+
+#define sz_xAppleDRIDestroyPixmapReq 8
+
+#ifdef _APPLEDRI_SERVER_
+
+void AppleDRISendEvent(
+#if NeedFunctionPrototypes
+                         int /* type */ ,
+                         unsigned int /* mask */ ,
+                         int /* which */ ,
+                         int    /* arg */
+#endif
+   );
+
+#endif /* _APPLEDRI_SERVER_ */
+#endif /* _APPLEDRISTR_H_ */
diff --git a/src/glx/apple/gen_api_header.tcl b/src/glx/apple/gen_api_header.tcl
new file mode 100644 (file)
index 0000000..9e986de
--- /dev/null
@@ -0,0 +1,86 @@
+
+package require Tcl 8.5
+
+set license {
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+}
+
+set this_script [info script]
+
+proc main {argc argv} {
+    if {2 != $argc} {
+       puts stderr "syntax is: [set ::this_script] serialized-array-file output.h"
+       return 1
+    }
+
+    set fd [open [lindex $argv 0] r]
+    array set api [read $fd]
+    close $fd
+    
+    set fd [open [lindex $argv 1] w]
+    
+    puts $fd "/* This file was automatically generated by [set ::this_script]. */"
+    puts $fd $::license
+
+    puts $fd "
+#ifndef APPLE_XGL_API_H
+#define APPLE_XGL_API_H
+"
+    
+    puts $fd "struct apple_xgl_api \{"
+
+    set sorted [lsort -dictionary [array names api]]
+
+    foreach f $sorted {
+       set attr $api($f)
+       set pstr ""
+
+       if {[dict exists $attr alias_for] || [dict exists $attr noop]} {
+           #Skip this function.
+           continue
+       }
+
+       foreach p [dict get $attr parameters] {
+           append pstr "[lindex $p 0] [lindex $p 1], "
+       }
+
+       set pstr [string trimright $pstr ", "]
+       puts $fd "\t[dict get $attr return] (*[set f])([set pstr]);"
+    }
+
+    puts $fd "\};"
+    puts $fd "void apple_xgl_init_direct(void);
+
+#endif /*APPLE_XGL_API_H*/
+"
+    
+    return 0    
+}
+exit [main $::argc $::argv]
\ No newline at end of file
diff --git a/src/glx/apple/gen_api_library.tcl b/src/glx/apple/gen_api_library.tcl
new file mode 100644 (file)
index 0000000..159f9c0
--- /dev/null
@@ -0,0 +1,212 @@
+package require Tcl 8.5
+
+set license {
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+}
+
+set gl_license {
+/*
+** License Applicability. Except to the extent portions of this file are
+** made subject to an alternative license as permitted in the SGI Free
+** Software License B, Version 1.1 (the "License"), the contents of this
+** file are subject only to the provisions of the License. You may not use
+** this file except in compliance with the License. You may obtain a copy
+** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
+** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
+** 
+** http://oss.sgi.com/projects/FreeB
+** 
+** Note that, as provided in the License, the Software is distributed on an
+** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
+** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
+** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
+** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+** 
+** Original Code. The Original Code is: OpenGL Sample Implementation,
+** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
+** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
+** Copyright in any portions created by third parties is as indicated
+** elsewhere herein. All Rights Reserved.
+** 
+** Additional Notice Provisions: This software was created using the
+** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
+** not been independently verified as being compliant with the OpenGL(R)
+** version 1.2.1 Specification.
+*/
+}
+
+set init_code {
+static void *glsym(void *handle, const char *name) { 
+    void *sym = dlsym(handle, name);
+
+    if(NULL == sym) {
+       fprintf(stderr, "Error: symbol not found: '%s'.  "
+               "Error information: %s\n",
+               name, dlerror());
+       abort();
+    }
+
+    return sym;
+}
+
+}
+
+set dlopen_code {
+#ifndef LIBGLNAME
+#define LIBGLNAME "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib"
+#endif LIBGLNAME
+
+    (void)dlerror(); /*drain dlerror()*/
+
+    handle = dlopen(LIBGLNAME, RTLD_LAZY);
+    
+    if(NULL == handle) {
+       fprintf(stderr, "error: unable to dlopen "
+               LIBGLNAME " :" "%s\n", dlerror());
+       abort();
+    }
+}
+
+set this_script [info script]
+
+proc main {argc argv} {
+    if {2 != $argc} {
+       puts stderr "syntax is: [set ::this_script] serialized-array-file output.c"
+       return 1
+    }
+
+    
+    set fd [open [lindex $argv 0] r]
+    array set api [read $fd]
+    close $fd
+
+    set fd [open [lindex $argv 1] w]
+    
+    puts $fd "/* This file was automatically generated by [set ::this_script]. */"
+    puts $fd $::license
+
+    puts $fd {
+#define GL_GLEXT_PROTOTYPES
+#include <GL/gl.h>
+#include <dlfcn.h>
+#include "glxclient.h"
+#include "apple_xgl_api.h"
+#include "apple_glx_context.h"
+    }
+
+    puts $fd "struct apple_xgl_api __gl_api;"
+    
+    set sorted [lsort -dictionary [array names api]]
+    
+    set exclude [list DrawBuffer DrawBuffers DrawBuffersARB]
+
+    #These are special to glXMakeContextCurrent.
+    #See also: apple_xgl_api_read.c.    
+    lappend exclude ReadPixels CopyPixels CopyColorTable 
+    
+    #This is excluded to work with surface updates.
+    lappend exclude Viewport
+    
+    foreach f $sorted {
+       if {$f in $exclude} {
+           continue
+       }
+
+       set attr $api($f)
+
+        set pstr ""
+
+        foreach p [dict get $attr parameters] {
+            append pstr "[lindex $p 0] [lindex $p 1], "
+        }
+
+       set pstr [string trimright $pstr ", "]
+
+       if {![string length $pstr]} {
+           set pstr void
+       }
+
+       set callvars ""
+
+       foreach p [dict get $attr parameters] {
+           append callvars "[lindex $p end], "
+       }
+
+       set callvars [string trimright $callvars ", "]
+
+       set return ""
+       if {"void" ne [dict get $attr return]} {
+           set return "return "
+       }
+
+       if {[dict exists $attr noop]} {
+           if {"void" eq [dict get $attr return]} {
+               set body "/*noop*/"
+           } else {
+               set body "return 0; /*noop*/"
+           }
+       } elseif {[dict exists $attr alias_for]} {
+           set alias [dict get $attr alias_for]
+           set body "[set return] gl[set alias]([set callvars]);"
+       } else {
+           set body "[set return]__gl_api.[set f]([set callvars]);"
+       }
+
+        puts $fd "GLAPI [dict get $attr return] APIENTRY gl[set f]([set pstr]) \{\n\t$body\n\}"
+    }
+
+    puts $fd $::init_code
+    
+    puts $fd "void apple_xgl_init_direct(void) \{"
+    puts $fd "\tvoid *handle;"
+
+    puts $fd $::dlopen_code
+    
+    foreach f $sorted {
+       set attr $api($f)
+
+       puts $attr
+       puts $f
+
+       if {[dict exists $attr alias_for] || [dict exists $attr noop]} {
+           #Function f is an alias_for another, so we shouldn't try
+           #to load it.
+           continue
+       }
+
+       puts $fd "\t__gl_api.$f = glsym(handle, \"gl$f\");"
+    }
+    
+    puts $fd "\}\n"
+    close $fd
+
+    return 0
+}
+exit [main $::argc $::argv]
diff --git a/src/glx/apple/gen_code.tcl b/src/glx/apple/gen_code.tcl
new file mode 100644 (file)
index 0000000..bb38d9f
--- /dev/null
@@ -0,0 +1,50 @@
+if 0 { 
+ Copyright (c) 2008 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+}
+
+package require Tcl 8.5
+
+proc main {} {
+    set tclsh [info nameofexecutable]
+
+    puts TYPES
+    exec $tclsh ./gen_types.tcl stage.1
+    puts DEFS
+    exec $tclsh ./gen_defs.tcl specs/enum.spec stage.2
+    puts FUNCS
+    exec $tclsh ./gen_funcs.tcl specs/gl.spec stage.3 stage.4
+    puts HEADER
+    exec $tclsh ./gen_api_header.tcl stage.4 apple_xgl_api.h
+    puts "C API"
+    exec $tclsh ./gen_api_library.tcl stage.4 apple_xgl_api.c
+    puts "EXPORTS"
+    exec $tclsh ./gen_exports.tcl stage.4 exports.list
+
+    return 0
+}
+exit [main]
diff --git a/src/glx/apple/gen_defs.tcl b/src/glx/apple/gen_defs.tcl
new file mode 100644 (file)
index 0000000..d32694d
--- /dev/null
@@ -0,0 +1,67 @@
+#This parses and generates #defines from an enum.spec type of file.
+
+proc main {argc argv} {
+    if {2 != $argc} {
+       puts stderr "syntax is: [info script] input.spec output.h"
+       exit 1
+    }
+
+    set fd [open [lindex $argv 0] r]
+    set data [read $fd]
+    close $fd
+
+    set fd [open [lindex $argv 1] w]
+    
+    set state ""
+
+    puts $fd "#define GL_VERSION_1_1 1"
+    puts $fd "#define GL_VERSION_1_2 1"
+    puts $fd "#define GL_VERSION_1_3 1"
+    puts $fd "#define GL_VERSION_1_4 1"
+    puts $fd "#define GL_VERSION_1_5 1"
+    puts $fd "#define GL_VERSION_2_0 1"
+    #puts $fd "#define GL_VERSION_3_0 1"
+
+    set mask ""
+    array set ar {}
+
+    foreach line [split $data \n] {
+       if {[regexp {^\S*#.*} $line] > 0} {
+           #puts COMMENT:$line
+           set state ""
+       } elseif {"enum" eq $state} {
+           if {[string match "\t*" $line]} {
+               if {[regexp {^\tuse.*} $line] > 0} {
+                   lassign [split [string trim $line]] use usemask def
+                   set usemask [string trim $usemask]
+                   set def [string trim $def]
+                   puts $fd "/* GL_$def */" 
+               } else {
+                   lassign [split [string trim $line] =] def value
+                   set def [string trim $def]
+                   set value [string trim $value]
+
+                   #Trim out the data like: 0x0B00 # 4 F
+                   set value [lindex [split $value] 0]
+
+                   puts $fd "#define GL_$def $value"
+
+                   #Save this association with the value.
+                   set d $ar($mask)
+                   dict set d $def $value
+                   set ar($mask) $d
+               }
+           } else {
+               set state ""
+           }
+       } elseif {[string match "* enum:*" $line]} {
+           lassign [split $line] mask _
+           puts $fd "\n/*[string trim $mask]*/"
+           set ar($mask) [dict create]
+           set state enum
+       }
+    }
+    
+    close $fd
+}
+main $::argc $::argv
diff --git a/src/glx/apple/gen_exports.tcl b/src/glx/apple/gen_exports.tcl
new file mode 100644 (file)
index 0000000..acfe6e6
--- /dev/null
@@ -0,0 +1,132 @@
+if 0 { 
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+}
+
+package require Tcl 8.5
+
+proc main {argc argv} {
+    if {2 != $argc} {
+       puts stderr "syntax is: [info script] serialized-array-file export.list"
+       return 1
+    }
+
+    set fd [open [lindex $argv 0] r]
+    array set api [read $fd]
+    close $fd
+
+    #Start with 1.0
+    set glxlist [list \
+                     glXChooseVisual glXCreateContext glXDestroyContext \
+                     glXMakeCurrent glXCopyContext glXSwapBuffers \
+                     glXCreateGLXPixmap glXDestroyGLXPixmap \
+                     glXQueryExtension glXQueryVersion \
+                     glXIsDirect glXGetConfig \
+                     glXGetCurrentContext glXGetCurrentDrawable \
+                     glXWaitGL glXWaitX glXUseXFont]
+
+    #GLX 1.1 and later
+    lappend glxlist glXQueryExtensionsString glXQueryServerString \
+                     glXGetClientString
+
+    #GLX 1.2 and later
+    lappend glxlist glXGetCurrentDisplay
+
+    #GLX 1.3 and later
+    lappend glxlist glXChooseFBConfig glXGetFBConfigAttrib \
+        glXGetFBConfigs glXGetVisualFromFBConfig \
+        glXCreateWindow glXDestroyWindow \
+        glXCreatePixmap glXDestroyPixmap \
+        glXCreatePbuffer glXDestroyPbuffer \
+        glXQueryDrawable glXCreateNewContext \
+        glXMakeContextCurrent glXGetCurrentReadDrawable \
+        glXQueryContext glXSelectEvent glXGetSelectedEvent
+
+    #GLX 1.4 and later
+    lappend glxlist glXGetProcAddress
+
+    #Extensions
+    lappend glxlist glXGetProcAddressARB
+
+    #Old extensions we don't support and never really have, but need for
+    #symbol compatibility.  See also: glx_empty.c
+    lappend glxlist glXSwapIntervalSGI glXSwapIntervalMESA \
+       glXGetSwapIntervalMESA glXBeginFrameTrackingMESA \
+       glXEndFrameTrackingMESA glXGetFrameUsageMESA \
+       glXQueryFrameTrackingMESA glXGetVideoSyncSGI \
+       glXWaitVideoSyncSGI glXJoinSwapGroupSGIX \
+       glXBindSwapBarrierSGIX glXQueryMaxSwapBarriersSGIX \
+       glXGetSyncValuesOML glXSwapBuffersMscOML \
+       glXWaitForMscOML glXWaitForSbcOML \
+       glXAllocateMemoryMESA glXFreeMemoryMESA \
+       glXGetMemoryOffsetMESA glXReleaseBuffersMESA \
+       glXCreateGLXPixmapMESA glXCopySubBufferMESA \
+       glXQueryGLXPbufferSGIX glXCreateGLXPbufferSGIX \
+       glXDestroyGLXPbufferSGIX glXSelectEventSGIX \
+       glXGetSelectedEventSGIX 
+    
+    #These are for GLX_SGIX_fbconfig, which isn't implemented, because
+    #we have the GLX 1.3 GLXFBConfig functions which are in the standard spec.
+    #It should be possible to support these to some extent.
+    #The old libGL somewhat supported the GLXFBConfigSGIX code, but lacked
+    #pbuffer, and pixmap support.
+    #We mainly just need these stubs for linking with apps, because for 
+    #some reason the OpenGL site suggests using the latest glxext.h, 
+    #and glxext.h defines all GLX extensions, which doesn't seem right for
+    #compile-time capability detection.
+    #See also: http://www.mesa3d.org/brianp/sig97/exten.htm#Compile
+    #which conflicts with: the ABI registry from what I saw on opengl.org. 
+    #By disabling some of the #defines in glxext.h we break some software,
+    #and by enabling them without the symbols we break others (in Mesa).
+    #I think a lot of OpenGL-based programs have issues one way or another.
+    #It seems that even Mesa developers are confused on this issue, because
+    #Mesa-7.3/progs/xdemos/glxgears_fbconfig.c has comments about breakage 
+    #in some comments.
+    lappend glxlist glXGetFBConfigAttribSGIX \
+       glXChooseFBConfigSGIX \
+       glXGetVisualFromFBConfigSGIX \
+       glXCreateGLXPixmapWithConfigSGIX \
+       glXCreateContextWithConfigSGIX \
+       glXGetFBConfigFromVisualSGIX
+    
+
+    set fd [open [lindex $argv 1] w]
+    
+    foreach f [lsort -dictionary [array names api]] {
+       puts $fd _gl$f
+    }
+
+    foreach f [lsort -dictionary $glxlist] {
+       puts $fd _$f
+    }
+    
+    close $fd
+
+    return 0
+}
+
+exit [main $::argc $::argv]
\ No newline at end of file
diff --git a/src/glx/apple/gen_funcs.tcl b/src/glx/apple/gen_funcs.tcl
new file mode 100644 (file)
index 0000000..1392c15
--- /dev/null
@@ -0,0 +1,735 @@
+package require Tcl 8.5
+
+#input is specs/gl.spec
+
+set license {
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+}
+
+
+proc extension name {
+    global extensions
+
+    set extensions($name) 1
+}
+
+proc alias {from to} {
+    global aliases
+    
+    set aliases($from) $to
+}
+
+proc promoted name {
+    global promoted
+
+    set promoted($name) 1
+}
+
+proc noop name {
+    global noop
+    
+    set noop($name) 1
+}
+
+set dir [file dirname [info script]]
+
+source [file join $dir GL_extensions]
+source [file join $dir GL_aliases]
+source [file join $dir GL_promoted]
+source [file join $dir GL_noop]
+
+proc is-extension-supported? name {
+    global extensions
+
+    return [info exists extensions($name)]
+}
+
+# This is going to need to be updated for future OpenGL versions:
+#    cat specs/gl.tm  | grep -v '^#' | awk -F, '{sub(/[ \t]+/, ""); print "    "$1 " \"" $4 "\""}'
+#    then change void from "*" to "void"
+#
+# TextureComponentCount is GLenum in SL for everything
+# It is GLint in mesa, but is GLenum for glTexImage3DEXT
+array set typemap {
+    AccumOp "GLenum"
+    AlphaFunction "GLenum"
+    AttribMask "GLbitfield"
+    BeginMode "GLenum"
+    BinormalPointerTypeEXT "GLenum"
+    BlendEquationMode "GLenum"
+    BlendEquationModeEXT "GLenum"
+    BlendFuncSeparateParameterEXT "GLenum"
+    BlendingFactorDest "GLenum"
+    BlendingFactorSrc "GLenum"
+    Boolean "GLboolean"
+    BooleanPointer "GLboolean*"
+    Char "GLchar"
+    CharPointer "GLchar*"
+    CheckedFloat32 "GLfloat"
+    CheckedInt32 "GLint"
+    ClampColorTargetARB "GLenum"
+    ClampColorModeARB "GLenum"
+    ClampedColorF "GLclampf"
+    ClampedFloat32 "GLclampf"
+    ClampedFloat64 "GLclampd"
+    ClampedStencilValue "GLint"
+    ClearBufferMask "GLbitfield"
+    ClientAttribMask "GLbitfield"
+    ClipPlaneName "GLenum"
+    ColorB "GLbyte"
+    ColorD "GLdouble"
+    ColorF "GLfloat"
+    ColorI "GLint"
+    ColorIndexValueD "GLdouble"
+    ColorIndexValueF "GLfloat"
+    ColorIndexValueI "GLint"
+    ColorIndexValueS "GLshort"
+    ColorIndexValueUB "GLubyte"
+    ColorMaterialParameter "GLenum"
+    ColorPointerType "GLenum"
+    ColorS "GLshort"
+    ColorTableParameterPName "GLenum"
+    ColorTableParameterPNameSGI "GLenum"
+    ColorTableTarget "GLenum"
+    ColorTableTargetSGI "GLenum"
+    ColorUB "GLubyte"
+    ColorUI "GLuint"
+    ColorUS "GLushort"
+    CombinerBiasNV "GLenum"
+    CombinerComponentUsageNV "GLenum"
+    CombinerMappingNV "GLenum"
+    CombinerParameterNV "GLenum"
+    CombinerPortionNV "GLenum"
+    CombinerRegisterNV "GLenum"
+    CombinerScaleNV "GLenum"
+    CombinerStageNV "GLenum"
+    CombinerVariableNV "GLenum"
+    CompressedTextureARB "GLvoid"
+    ControlPointNV "GLvoid"
+    ControlPointTypeNV "GLenum"
+    ConvolutionParameter "GLenum"
+    ConvolutionParameterEXT "GLenum"
+    ConvolutionTarget "GLenum"
+    ConvolutionTargetEXT "GLenum"
+    CoordD "GLdouble"
+    CoordF "GLfloat"
+    CoordI "GLint"
+    CoordS "GLshort"
+    CullFaceMode "GLenum"
+    CullParameterEXT "GLenum"
+    DepthFunction "GLenum"
+    DrawBufferMode "GLenum"
+    DrawBufferName "GLint"
+    DrawElementsType "GLenum"
+    ElementPointerTypeATI "GLenum"
+    EnableCap "GLenum"
+    ErrorCode "GLenum"
+    EvalMapsModeNV "GLenum"
+    EvalTargetNV "GLenum"
+    FeedbackElement "GLfloat"
+    FeedbackType "GLenum"
+    FenceNV "GLuint"
+    FenceConditionNV "GLenum"
+    FenceParameterNameNV "GLenum"
+    FfdMaskSGIX "GLbitfield"
+    FfdTargetSGIX "GLenum"
+    Float32 "GLfloat"
+    Float32Pointer "GLfloat*"
+    Float64 "GLdouble"
+    Float64Pointer "GLdouble*"
+    FogParameter "GLenum"
+    FogPointerTypeEXT "GLenum"
+    FogPointerTypeIBM "GLenum"
+    FragmentLightModelParameterSGIX "GLenum"
+    FragmentLightNameSGIX "GLenum"
+    FragmentLightParameterSGIX "GLenum"
+    FramebufferAttachment "GLenum"
+    FramebufferTarget "GLenum"
+    FrontFaceDirection "GLenum"
+    FunctionPointer "_GLfuncptr"
+    GetColorTableParameterPName "GLenum"
+    GetColorTableParameterPNameSGI "GLenum"
+    GetConvolutionParameterPName "GLenum"
+    GetHistogramParameterPName "GLenum"
+    GetHistogramParameterPNameEXT "GLenum"
+    GetMapQuery "GLenum"
+    GetMinmaxParameterPName "GLenum"
+    GetMinmaxParameterPNameEXT "GLenum"
+    GetPName "GLenum"
+    GetPointervPName "GLenum"
+    GetTextureParameter "GLenum"
+    HintMode "GLenum"
+    HintTarget "GLenum"
+    HintTargetPGI "GLenum"
+    HistogramTarget "GLenum"
+    HistogramTargetEXT "GLenum"
+    IglooFunctionSelectSGIX "GLenum"
+    IglooParameterSGIX "GLvoid"
+    ImageTransformPNameHP "GLenum"
+    ImageTransformTargetHP "GLenum"
+    IndexFunctionEXT "GLenum"
+    IndexMaterialParameterEXT "GLenum"
+    IndexPointerType "GLenum"
+    Int16 "GLshort"
+    Int32 "GLint"
+    Int8 "GLbyte"
+    InterleavedArrayFormat "GLenum"
+    LightEnvParameterSGIX "GLenum"
+    LightModelParameter "GLenum"
+    LightName "GLenum"
+    LightParameter "GLenum"
+    LightTextureModeEXT "GLenum"
+    LightTexturePNameEXT "GLenum"
+    LineStipple "GLushort"
+    List "GLuint"
+    ListMode "GLenum"
+    ListNameType "GLenum"
+    ListParameterName "GLenum"
+    LogicOp "GLenum"
+    MapAttribParameterNV "GLenum"
+    MapParameterNV "GLenum"
+    MapTarget "GLenum"
+    MapTargetNV "GLenum"
+    MapTypeNV "GLenum"
+    MaskedColorIndexValueF "GLfloat"
+    MaskedColorIndexValueI "GLuint"
+    MaskedStencilValue "GLuint"
+    MaterialFace "GLenum"
+    MaterialParameter "GLenum"
+    MatrixIndexPointerTypeARB "GLenum"
+    MatrixMode "GLenum"
+    MatrixTransformNV "GLenum"
+    MeshMode1 "GLenum"
+    MeshMode2 "GLenum"
+    MinmaxTarget "GLenum"
+    MinmaxTargetEXT "GLenum"
+    NormalPointerType "GLenum"
+    NurbsCallback "GLenum"
+    NurbsObj "GLUnurbs*"
+    NurbsProperty "GLenum"
+    NurbsTrim "GLenum"
+    OcclusionQueryParameterNameNV "GLenum"
+    PixelCopyType "GLenum"
+    PixelFormat "GLenum"
+    PixelInternalFormat "GLenum"
+    PixelMap "GLenum"
+    PixelStoreParameter "GLenum"
+    PixelTexGenModeSGIX "GLenum"
+    PixelTexGenParameterNameSGIS "GLenum"
+    PixelTransferParameter "GLenum"
+    PixelTransformPNameEXT "GLenum"
+    PixelTransformTargetEXT "GLenum"
+    PixelType "GLenum"
+    PointParameterNameARB "GLenum"
+    PolygonMode "GLenum"
+    ProgramNV "GLuint"
+    ProgramCharacterNV "GLubyte"
+    ProgramParameterNV "GLenum"
+    ProgramParameterPName "GLenum"
+    QuadricCallback "GLenum"
+    QuadricDrawStyle "GLenum"
+    QuadricNormal "GLenum"
+    QuadricObj "GLUquadric*"
+    QuadricOrientation "GLenum"
+    ReadBufferMode "GLenum"
+    RenderbufferTarget "GLenum"
+    RenderingMode "GLenum"
+    ReplacementCodeSUN "GLuint"
+    ReplacementCodeTypeSUN "GLenum"
+    SamplePassARB "GLenum"
+    SamplePatternEXT "GLenum"
+    SamplePatternSGIS "GLenum"
+    SecondaryColorPointerTypeIBM "GLenum"
+    SelectName "GLuint"
+    SeparableTarget "GLenum"
+    SeparableTargetEXT "GLenum"
+    ShadingModel "GLenum"
+    SizeI "GLsizei"
+    SpriteParameterNameSGIX "GLenum"
+    StencilFunction "GLenum"
+    StencilFaceDirection "GLenum"
+    StencilOp "GLenum"
+    StencilValue "GLint"
+    String "const GLubyte *"
+    StringName "GLenum"
+    TangentPointerTypeEXT "GLenum"
+    TessCallback "GLenum"
+    TessContour "GLenum"
+    TessProperty "GLenum"
+    TesselatorObj "GLUtesselator*"
+    TexCoordPointerType "GLenum"
+    Texture "GLuint"
+    TextureComponentCount "GLint"
+    TextureCoordName "GLenum"
+    TextureEnvParameter "GLenum"
+    TextureEnvTarget "GLenum"
+    TextureFilterSGIS "GLenum"
+    TextureGenParameter "GLenum"
+    TextureNormalModeEXT "GLenum"
+    TextureParameterName "GLenum"
+    TextureTarget "GLenum"
+    TextureUnit "GLenum"
+    UInt16 "GLushort"
+    UInt32 "GLuint"
+    UInt8 "GLubyte"
+    VertexAttribEnum "GLenum"
+    VertexAttribEnumNV "GLenum"
+    VertexAttribPointerTypeNV "GLenum"
+    VertexPointerType "GLenum"
+    VertexWeightPointerTypeEXT "GLenum"
+    Void "GLvoid"
+    VoidPointer "GLvoid*"
+    ConstVoidPointer "GLvoid* const"
+    WeightPointerTypeARB "GLenum"
+    WinCoord "GLint"
+    void "void"
+    ArrayObjectPNameATI "GLenum"
+    ArrayObjectUsageATI "GLenum"
+    ConstFloat32 "GLfloat"
+    ConstInt32 "GLint"
+    ConstUInt32 "GLuint"
+    ConstVoid "GLvoid"
+    DataTypeEXT "GLenum"
+    FragmentOpATI "GLenum"
+    GetTexBumpParameterATI "GLenum"
+    GetVariantValueEXT "GLenum"
+    ParameterRangeEXT "GLenum"
+    PreserveModeATI "GLenum"
+    ProgramFormatARB "GLenum"
+    ProgramTargetARB "GLenum"
+    ProgramTarget "GLenum"
+    ProgramPropertyARB "GLenum"
+    ProgramStringPropertyARB "GLenum"
+    ScalarType "GLenum"
+    SwizzleOpATI "GLenum"
+    TexBumpParameterATI "GLenum"
+    VariantCapEXT "GLenum"
+    VertexAttribPointerPropertyARB "GLenum"
+    VertexAttribPointerTypeARB "GLenum"
+    VertexAttribPropertyARB "GLenum"
+    VertexShaderCoordOutEXT "GLenum"
+    VertexShaderOpEXT "GLenum"
+    VertexShaderParameterEXT "GLenum"
+    VertexShaderStorageTypeEXT "GLenum"
+    VertexShaderTextureUnitParameter "GLenum"
+    VertexShaderWriteMaskEXT "GLenum"
+    VertexStreamATI "GLenum"
+    PNTrianglesPNameATI "GLenum"
+    BufferOffset "GLintptr"
+    BufferSize "GLsizeiptr"
+    BufferAccessARB "GLenum"
+    BufferOffsetARB "GLintptrARB"
+    BufferPNameARB "GLenum"
+    BufferPointerNameARB "GLenum"
+    BufferSizeARB "GLsizeiptrARB"
+    BufferTargetARB "GLenum"
+    BufferUsageARB "GLenum"
+    ObjectTypeAPPLE "GLenum"
+    VertexArrayPNameAPPLE "GLenum"
+    DrawBufferModeATI "GLenum"
+    Half16NV "GLhalfNV"
+    PixelDataRangeTargetNV "GLenum"
+    TypeEnum "GLenum"
+    GLbitfield "GLbitfield"
+    GLenum "GLenum"
+    Int64 "GLint64"
+    UInt64 "GLuint64"
+    handleARB "GLhandleARB"
+    charARB "GLcharARB"
+    charPointerARB "GLcharARB*"
+    sync "GLsync"
+    Int64EXT "GLint64EXT"
+    UInt64EXT "GLuint64EXT"
+    FramebufferAttachment "GLenum"
+    FramebufferAttachmentParameterName "GLenum"
+    Framebuffer "GLuint"
+    FramebufferStatus "GLenum"
+    FramebufferTarget "GLenum"
+    GetFramebufferParameter "GLenum"
+    Intptr "GLintptr"
+    ProgramFormat "GLenum"
+    ProgramProperty "GLenum"
+    ProgramStringProperty "GLenum"
+    ProgramTarget "GLenum"
+    Renderbuffer "GLuint"
+    RenderbufferParameterName "GLenum"
+    Sizeiptr "GLsizeiptr"
+    TextureInternalFormat "GLenum"
+    VertexBufferObjectAccess "GLenum"
+    VertexBufferObjectParameter "GLenum"
+    VertexBufferObjectUsage "GLenum"
+    BufferAccessMask "GLbitfield"
+    GetMultisamplePNameNV "GLenum"
+    SampleMaskNV "GLbitfield"
+}
+
+proc psplit s {
+    set r [list]
+    set token ""
+
+    foreach c [split $s ""] {
+       if {[string is space -strict $c]} {
+           if {[string length $token]} {
+               lappend r $token
+           }
+           set token ""
+       } else {
+           append token $c
+       }
+    }
+
+    if {[string length $token]} {
+       lappend r $token
+    }
+
+    return $r
+}
+
+proc is-extension? str {
+    #Check if the trailing name of the function is NV, or EXT, and so on.
+    
+    if {[string is upper [string index $str end]]
+       && [string is upper [string index $str end-1]]} {
+       return 1
+    } 
+
+    return 0
+}
+
+
+proc parse {data arvar} {
+    upvar 1 $arvar ar
+
+    set state ""
+    set name ""
+
+    foreach line [split $data \n] {
+       if {"attr" eq $state} {
+           if {[string match "\t*" $line]} {
+               set plist [psplit [lindex [split $line "#"] 0]]
+               #puts PLIST:$plist
+               set master $ar($name)
+               set param [dict get $master parameters]
+
+               switch -- [llength $plist] {
+                   1 {
+                       dict set master [lindex $plist 0] ""
+                   }
+
+                   2 {
+                       #standard key, value pair
+                       set key [lindex $plist 0]
+                       set value [lindex $plist 1]
+
+                       dict set master $key $value
+                   }
+
+                   default {
+                       set key [lindex $plist 0]
+
+                       #puts PLIST:$plist
+
+                       if {"param" eq $key} {
+                           lappend param [list [lindex $plist 1] [lindex $plist 2] [lindex $plist 3] [lindex $plist 4]]
+                       } else {
+                           dict set master $key [lrange $plist 1 end]
+                       }
+                   }               
+               }
+               
+               dict set master parameters $param
+
+               set ar($name) $master
+           } else {
+               set state ""
+           }
+       } elseif {[regexp {^([A-Z_a-z0-9]+)\((.*)\)\S*} $line all name argv] > 0} {
+           #puts "MATCH:$name ARGV:$argv"
+           
+           #Trim the spaces in the elements.
+           set newargv [list]
+           foreach a [split $argv ,] {
+               lappend newargv [string trim $a]
+           }
+           
+
+           set d [dict create name $name arguments $newargv \
+                      parameters [dict create]]
+           set ar($name) $d
+           set state attr
+       } 
+    }
+}
+
+#This returns true if the category is valid for an extension.
+proc is-valid-category? c {
+    set clist [list display-list drawing drawing-control feedback framebuf misc modeling pixel-op pixel-rw state-req xform VERSION_1_0 VERSION_1_0_DEPRECATED VERSION_1_1 VERSION_1_1_DEPRECATED VERSION_1_2 VERSION_1_2_DEPRECATED VERSION_1_3 VERSION_1_3_DEPRECATED VERSION_1_4 VERSION_1_4_DEPRECATED VERSION_1_5 VERSION_2_0 VERSION_2_1 VERSION_3_0 VERSION_3_0_DEPRECATED VERSION_3_1 VERSION_3_2]
+
+    set result [expr {$c in $clist}]
+
+
+    if {!$result} {
+       set result [is-extension-supported? $c]
+    }
+
+    return $result
+}
+
+proc translate-parameters {func parameters} {
+    global typemap
+
+    set newparams [list]
+
+    foreach p $parameters {
+       set var [lindex $p 0]
+       
+       set ptype [lindex $p 1]
+       
+       if {![info exists typemap($ptype)]} {
+           set ::missingTypes($ptype) $func
+           continue
+       }
+       
+       set type $typemap($ptype)
+       
+       if {"array" eq [lindex $p 3]} {
+           if {"in" eq [lindex $p 2]} {
+               set final_type "const $type *"
+           } else {
+               set final_type "$type *"
+           }
+       } else {
+           set final_type $type
+       }
+           
+       lappend newparams [list $final_type $var]
+    }
+    return $newparams
+}
+
+proc api-new-entry {info func} {
+    global typemap
+
+    set master [dict create]
+    set rettype [dict get $info return]
+    
+    if {![info exists typemap($rettype)]} {
+       set ::missingTypes($rettype) $func
+    } else {
+       dict set master return $typemap($rettype)
+    }
+    
+    dict set master parameters [translate-parameters $func \
+                                   [dict get $info parameters]]
+
+    return $master
+}
+
+proc main {argc argv} {
+    global extensions typemap aliases promoted noop
+
+    set fd [open [lindex $argv 0] r]
+    set data [read $fd]
+    close $fd
+  
+    array set ar {}
+    
+    parse $data ar
+    
+    array set newapi {}
+    array set missingTypes {}
+
+    foreach {key value} [array get ar] {
+       puts "KEY:$key VALUE:$value"
+
+       set category [dict get $value category]
+       
+       #Invalidate any of the extensions and things not in the spec we support.
+       set valid [is-valid-category? $category]
+       puts VALID:$valid
+       
+       if {!$valid} {
+          continue
+       }
+
+       puts "VALID:$key"
+
+       if {"BlitFramebuffer" eq $key} {
+           #This was promoted to an ARB extension after Leopard it seems.
+           set key BlitFramebufferEXT
+       }
+
+       if {"ARB_framebuffer_object" eq $category} {
+           #This wasn't an ARB extension in Leopard either.
+           if {![string match *EXT $key]} {
+               append key EXT
+           }
+       }
+
+       set newapi($key) [api-new-entry $value $key]
+    }
+
+    #Now iterate and support as many aliases as we can for promoted functions
+    #based on if the newapi contains the function.
+    foreach {func value} [array get ar] {
+       if {![info exists promoted([dict get $value category])]} {
+           continue
+       }
+
+       if {[dict exists $value alias]} {
+           #We have an alias.  Let's see if we have the implementation.
+           set alias [dict get $value alias]
+
+           if {[info exists newapi($alias)] && ![info exists newapi($func)]} {
+               #We have an implementing function available.
+               puts "HAVE:$key ALIAS:$alias"
+
+               set master [api-new-entry $value $func]
+               dict set master alias_for $alias
+               set newapi($func) $master               
+           }
+       }
+    } 
+
+    parray noop
+
+    #Now handle the no-op compatibility categories.
+    foreach {func value} [array get ar] {
+       if {[info exists noop([dict get $value category])]} {
+           if {[info exists newapi($func)]} {
+               puts stderr "$func shouldn't be a noop"
+               exit 1
+           }
+           
+           set master [api-new-entry $value $func]
+           dict set master noop 1
+           set newapi($func) $master
+       }
+    }
+
+    
+
+    parray newapi
+
+    if {[array size ::missingTypes]} {
+       parray ::missingTypes
+       return 1
+    }
+
+    foreach {from to} [array get aliases] {
+       set d $newapi($to)
+       dict set d alias_for $to
+       set newapi($from) $d
+    }
+
+    #Iterate the nm output and set each symbol in an associative array.
+    array set validapi {}
+
+    foreach line [split [exec nm -j -g /System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib] \n] {
+       set fn [string trim $line]
+
+       #Only match the _gl functions.
+       if {[string match _gl* $fn]} {
+           set finalfn [string range $fn 3 end]
+           puts FINALFN:$finalfn
+           set validapi($finalfn) $finalfn
+       }
+    }
+
+    puts "Correcting the API functions to match the OpenGL framework."
+    #parray validapi
+    
+    #Iterate the newapi and unset any members that the
+    #libGL.dylib doesn't support, assuming they aren't no-ops.
+    foreach fn [array names newapi] {
+       if {![info exists validapi($fn)]} {
+           puts "WARNING: libGL.dylib lacks support for: $fn"
+
+           if {[dict exists $newapi($fn) noop] 
+               && [dict get $newapi($fn) noop]} {
+               #This is no-op, so we should skip it.
+               continue
+           }
+
+           #Is the function an alias for another in libGL?
+           if {[dict exists $newapi($fn) alias_for]} {
+               set alias [dict get $newapi($fn) alias_for]
+
+               if {![info exists validapi($alias)]} {
+                   puts "WARNING: alias function doesn't exist for $fn."
+                   puts "The alias is $alias."
+                   puts "unsetting $fn"                    
+                   unset newapi($fn)
+               } 
+           } else {
+               puts "unsetting $fn"
+               unset newapi($fn)
+           }
+       }
+    }
+
+    
+    #Now print a warning about any symbols that libGL supports that we don't.
+    foreach fn [array names validapi] {
+       if {![info exists newapi($fn)]} {
+           puts "AppleSGLX is missing $fn"
+       }
+    }
+
+    puts "NOW GENERATING:[lindex $::argv 1]"
+    set fd [open [lindex $::argv 1] w]
+
+    set sorted [lsort -dictionary [array names newapi]]
+
+    foreach f $sorted {
+       set attr $newapi($f)
+       set pstr ""
+       foreach p [dict get $attr parameters] {
+           append pstr "[lindex $p 0] [lindex $p 1], "
+       }
+       set pstr [string trimright $pstr ", "]
+       puts $fd "[dict get $attr return] gl[set f]($pstr); "
+    }
+
+    close $fd
+
+    if {$::argc == 3} {
+       puts "NOW GENERATING:[lindex $::argv 2]"
+       #Dump the array as a serialized list.
+       set fd [open [lindex $::argv 2] w]
+       puts $fd [array get newapi]
+       close $fd
+    }
+
+    return 0
+}
+exit [main $::argc $::argv]
+
diff --git a/src/glx/apple/gen_types.tcl b/src/glx/apple/gen_types.tcl
new file mode 100644 (file)
index 0000000..ed20bda
--- /dev/null
@@ -0,0 +1,32 @@
+
+proc main {argc argv} {
+    if {1 != $argc} {
+       puts stderr "syntax is: [info script] output.h"
+       exit 1
+    } 
+
+    set fd [open [lindex $argv 0] w]
+    puts $fd "
+/*OpenGL primitive typedefs*/
+typedef unsigned int GLenum;
+typedef unsigned char GLboolean;
+typedef unsigned int GLbitfield;
+typedef signed char GLbyte;
+typedef short GLshort;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned char GLubyte;
+typedef unsigned short GLushort;
+typedef unsigned int GLuint;
+typedef float GLfloat;
+typedef float GLclampf;
+typedef double GLdouble;
+typedef double GLclampd;
+typedef void GLvoid;
+
+typedef long GLintptr;
+typedef long GLsizeiptr;
+"
+
+}
+main $::argc $::argv
diff --git a/src/glx/apple/glx_empty.c b/src/glx/apple/glx_empty.c
new file mode 100644 (file)
index 0000000..44c5a25
--- /dev/null
@@ -0,0 +1,375 @@
+#include "glxclient.h"
+#include "glxextensions.h"
+#include "glcontextmodes.h"
+
+/*
+** GLX_SGI_swap_control
+*/
+int
+glXSwapIntervalSGI(int interval)
+{
+   (void) interval;
+   return 0;
+}
+
+
+/*
+** GLX_MESA_swap_control
+*/
+int
+glXSwapIntervalMESA(unsigned int interval)
+{
+   (void) interval;
+   return GLX_BAD_CONTEXT;
+}
+
+
+int
+glXGetSwapIntervalMESA(void)
+{
+   return 0;
+}
+
+
+/*
+** GLX_MESA_swap_frame_usage
+*/
+
+int
+glXBeginFrameTrackingMESA(Display * dpy, GLXDrawable drawable)
+{
+   int status = GLX_BAD_CONTEXT;
+   (void) dpy;
+   (void) drawable;
+   return status;
+}
+
+
+int
+glXEndFrameTrackingMESA(Display * dpy, GLXDrawable drawable)
+{
+   int status = GLX_BAD_CONTEXT;
+   (void) dpy;
+   (void) drawable;
+   return status;
+}
+
+
+int
+glXGetFrameUsageMESA(Display * dpy, GLXDrawable drawable, GLfloat * usage)
+{
+   int status = GLX_BAD_CONTEXT;
+   (void) dpy;
+   (void) drawable;
+   (void) usage;
+   return status;
+}
+
+int
+glXQueryFrameTrackingMESA(Display * dpy, GLXDrawable drawable,
+                          int64_t * sbc, int64_t * missedFrames,
+                          GLfloat * lastMissedUsage)
+{
+   int status = GLX_BAD_CONTEXT;
+   (void) dpy;
+   (void) drawable;
+   (void) sbc;
+   (void) missedFrames;
+   (void) lastMissedUsage;
+   return status;
+}
+
+/*
+** GLX_SGI_video_sync
+*/
+int
+glXGetVideoSyncSGI(unsigned int *count)
+{
+   (void) count;
+   return GLX_BAD_CONTEXT;
+}
+
+int
+glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
+{
+   (void) count;
+   return GLX_BAD_CONTEXT;
+}
+
+
+/*
+** GLX_SGIX_swap_group
+*/
+void
+glXJoinSwapGroupSGIX(Display * dpy, GLXDrawable drawable, GLXDrawable member)
+{
+   (void) dpy;
+   (void) drawable;
+   (void) member;
+}
+
+
+/*
+** GLX_SGIX_swap_barrier
+*/
+void
+glXBindSwapBarrierSGIX(Display * dpy, GLXDrawable drawable, int barrier)
+{
+   (void) dpy;
+   (void) drawable;
+   (void) barrier;
+}
+
+Bool
+glXQueryMaxSwapBarriersSGIX(Display * dpy, int screen, int *max)
+{
+   (void) dpy;
+   (void) screen;
+   (void) max;
+   return False;
+}
+
+
+/*
+** GLX_OML_sync_control
+*/
+Bool
+glXGetSyncValuesOML(Display * dpy, GLXDrawable drawable,
+                    int64_t * ust, int64_t * msc, int64_t * sbc)
+{
+   (void) dpy;
+   (void) drawable;
+   (void) ust;
+   (void) msc;
+   (void) sbc;
+   return False;
+}
+
+int64_t
+glXSwapBuffersMscOML(Display * dpy, GLXDrawable drawable,
+                     int64_t target_msc, int64_t divisor, int64_t remainder)
+{
+   (void) dpy;
+   (void) drawable;
+   (void) target_msc;
+   (void) divisor;
+   (void) remainder;
+   return 0;
+}
+
+
+Bool
+glXWaitForMscOML(Display * dpy, GLXDrawable drawable,
+                 int64_t target_msc, int64_t divisor,
+                 int64_t remainder, int64_t * ust,
+                 int64_t * msc, int64_t * sbc)
+{
+   (void) dpy;
+   (void) drawable;
+   (void) target_msc;
+   (void) divisor;
+   (void) remainder;
+   (void) ust;
+   (void) msc;
+   (void) sbc;
+   return False;
+}
+
+
+Bool
+glXWaitForSbcOML(Display * dpy, GLXDrawable drawable,
+                 int64_t target_sbc, int64_t * ust,
+                 int64_t * msc, int64_t * sbc)
+{
+   (void) dpy;
+   (void) drawable;
+   (void) target_sbc;
+   (void) ust;
+   (void) msc;
+   (void) sbc;
+   return False;
+}
+
+
+/**
+ * GLX_MESA_allocate_memory
+ */
+/*@{*/
+
+PUBLIC void *
+glXAllocateMemoryMESA(Display * dpy, int scrn,
+                      size_t size, float readFreq,
+                      float writeFreq, float priority)
+{
+   (void) dpy;
+   (void) scrn;
+   (void) size;
+   (void) readFreq;
+   (void) writeFreq;
+   (void) priority;
+   return NULL;
+}
+
+
+PUBLIC void
+glXFreeMemoryMESA(Display * dpy, int scrn, void *pointer)
+{
+#ifdef __DRI_ALLOCATE
+   __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, scrn);
+
+   if (psc && psc->allocate)
+      (*psc->allocate->freeMemory) (psc->__driScreen, pointer);
+
+#else
+   (void) dpy;
+   (void) scrn;
+   (void) pointer;
+#endif /* __DRI_ALLOCATE */
+}
+
+
+PUBLIC GLuint
+glXGetMemoryOffsetMESA(Display * dpy, int scrn, const void *pointer)
+{
+   (void) dpy;
+   (void) scrn;
+   (void) pointer;
+   return ~0L;
+}
+
+Bool
+glXReleaseBuffersMESA(Display * dpy, GLXDrawable d)
+{
+   (void) dpy;
+   (void) d;
+   return False;
+}
+
+
+PUBLIC GLXPixmap
+glXCreateGLXPixmapMESA(Display * dpy, XVisualInfo * visual,
+                       Pixmap pixmap, Colormap cmap)
+{
+   (void) dpy;
+   (void) visual;
+   (void) pixmap;
+   (void) cmap;
+   return 0;
+}
+
+
+/**
+ * GLX_MESA_copy_sub_buffer
+ */
+void
+glXCopySubBufferMESA(Display * dpy, GLXDrawable drawable,
+                     int x, int y, int width, int height)
+{
+   (void) dpy;
+   (void) drawable;
+   (void) x;
+   (void) y;
+   (void) width;
+   (void) height;
+}
+
+
+PUBLIC int
+glXQueryGLXPbufferSGIX(Display * dpy, GLXDrawable drawable,
+                       int attribute, unsigned int *value)
+{
+   (void) dpy;
+   (void) drawable;
+   (void) attribute;
+   (void) value;
+   return 0;
+}
+
+PUBLIC GLXDrawable
+glXCreateGLXPbufferSGIX(Display * dpy, GLXFBConfig config,
+                        unsigned int width, unsigned int height,
+                        int *attrib_list)
+{
+   (void) dpy;
+   (void) config;
+   (void) width;
+   (void) height;
+   (void) attrib_list;
+   return None;
+}
+
+#if 0
+/* GLX_SGIX_fbconfig */
+PUBLIC int
+glXGetFBConfigAttribSGIX(Display * dpy, void *config, int a, int *b)
+{
+   (void) dpy;
+   (void) config;
+   (void) a;
+   (void) b;
+   return 0;
+}
+
+PUBLIC void *
+glXChooseFBConfigSGIX(Display * dpy, int a, int *b, int *c)
+{
+   (void) dpy;
+   (void) a;
+   (void) b;
+   (void) c;
+   return NULL;
+}
+
+PUBLIC GLXPixmap
+glXCreateGLXPixmapWithConfigSGIX(Display * dpy, void *config, Pixmap p)
+{
+   (void) dpy;
+   (void) config;
+   (void) p;
+   return None;
+}
+
+PUBLIC GLXContext
+glXCreateContextWithConfigSGIX(Display * dpy, void *config, int a,
+                               GLXContext b, Bool c)
+{
+   (void) dpy;
+   (void) config;
+   (void) a;
+   (void) b;
+   (void) c;
+   return NULL;
+}
+
+PUBLIC XVisualInfo *
+glXGetVisualFromFBConfigSGIX(Display * dpy, void *config)
+{
+   (void) dpy;
+   (void) config;
+   return NULL;
+}
+
+PUBLIC void *
+glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * visinfo)
+{
+   (void) dpy;
+   (void) visinfo;
+   return NULL;
+}
+#endif
+
+
+PUBLIC
+GLX_ALIAS_VOID(glXDestroyGLXPbufferSGIX,
+               (Display * dpy, GLXDrawable pbuf),
+               (dpy, pbuf), glXDestroyPbuffer)
+
+     PUBLIC GLX_ALIAS_VOID(glXSelectEventSGIX,
+                           (Display * dpy, GLXDrawable drawable,
+                            unsigned long mask), (dpy, drawable, mask),
+                           glXSelectEvent)
+
+     PUBLIC GLX_ALIAS_VOID(glXGetSelectedEventSGIX,
+                           (Display * dpy, GLXDrawable drawable,
+                            unsigned long *mask), (dpy, drawable, mask),
+                           glXGetSelectedEvent)
diff --git a/src/glx/apple/glx_error.c b/src/glx/apple/glx_error.c
new file mode 100644 (file)
index 0000000..282f7ae
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+#include <stdbool.h>
+#include <X11/Xlibint.h>
+#include <X11/extensions/extutil.h>
+#include <X11/extensions/Xext.h>
+#include "glxclient.h"
+#include "glx_error.h"
+
+extern XExtDisplayInfo *__glXFindDisplay(Display * dpy);
+
+void
+__glXSendError(Display * dpy, int errorCode, unsigned long resourceID,
+               unsigned long minorCode, bool coreX11error)
+{
+   XExtDisplayInfo *info = __glXFindDisplay(dpy);
+   GLXContext gc = __glXGetCurrentContext();
+   xError error;
+
+   LockDisplay(dpy);
+
+   error.type = X_Error;
+
+   if (coreX11error) {
+      error.errorCode = errorCode;
+   }
+   else {
+      error.errorCode = info->codes->first_error + errorCode;
+   }
+
+   error.sequenceNumber = dpy->request;
+   error.resourceID = resourceID;
+   error.minorCode = minorCode;
+   error.majorCode = gc ? gc->majorOpcode : 0;
+
+   _XError(dpy, &error);
+
+   UnlockDisplay(dpy);
+}
diff --git a/src/glx/apple/glx_error.h b/src/glx/apple/glx_error.h
new file mode 100644 (file)
index 0000000..6ba2f85
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) 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.
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+#include <stdbool.h>
+#include <X11/Xlib.h>
+
+void __glXSendError(Display * dpy, int errorCode, unsigned long resourceID,
+                    unsigned long minorCode, bool coreX11error);
diff --git a/src/glx/apple/glxreply.c b/src/glx/apple/glxreply.c
new file mode 100644 (file)
index 0000000..7280bc9
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+ * (C) Copyright Apple Inc. 2008
+ * (C) Copyright IBM Corporation 2004, 2005
+ * 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
+ * IBM,
+ * AND/OR THEIR 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 <GL/gl.h>
+#include "glxclient.h"
+#include <GL/glxproto.h>
+
+CARD32
+__glXReadReply(Display * dpy, size_t size, void *dest,
+               GLboolean reply_is_always_array)
+{
+   xGLXSingleReply reply;
+
+   (void) _XReply(dpy, (xReply *) & reply, 0, False);
+   if (size != 0) {
+      if ((reply.length > 0) || reply_is_always_array) {
+         const GLint bytes = (reply_is_always_array)
+            ? (4 * reply.length) : (reply.size * size);
+         const GLint extra = 4 - (bytes & 3);
+
+         _XRead(dpy, dest, bytes);
+         if (extra < 4) {
+            _XEatData(dpy, extra);
+         }
+      }
+      else {
+         (void) memcpy(dest, &(reply.pad3), size);
+      }
+   }
+
+   return reply.retval;
+}
+
+void
+__glXReadPixelReply(Display * dpy, __GLXcontext * gc, unsigned max_dim,
+                    GLint width, GLint height, GLint depth, GLenum format,
+                    GLenum type, void *dest, GLboolean dimensions_in_reply)
+{
+   xGLXSingleReply reply;
+   GLint size;
+
+   (void) _XReply(dpy, (xReply *) & reply, 0, False);
+
+   if (dimensions_in_reply) {
+      width = reply.pad3;
+      height = reply.pad4;
+      depth = reply.pad5;
+
+      if ((height == 0) || (max_dim < 2)) {
+         height = 1;
+      }
+      if ((depth == 0) || (max_dim < 3)) {
+         depth = 1;
+      }
+   }
+
+   size = reply.length * 4;
+   if (size != 0) {
+      void *buf = Xmalloc(size);
+
+      if (buf == NULL) {
+         _XEatData(dpy, size);
+         __glXSetError(gc, GL_OUT_OF_MEMORY);
+      }
+      else {
+         const GLint extra = 4 - (size & 3);
+
+         _XRead(dpy, buf, size);
+         if (extra < 4) {
+            _XEatData(dpy, extra);
+         }
+
+         __glEmptyImage(gc, 3, width, height, depth, format, type, buf, dest);
+         Xfree(buf);
+      }
+   }
+}
+
+#if 0
+GLubyte *
+__glXSetupSingleRequest(__GLXcontext * gc, GLint sop, GLint cmdlen)
+{
+   xGLXSingleReq *req;
+   Display *const dpy = gc->currentDpy;
+
+   (void) __glXFlushRenderBuffer(gc, gc->pc);
+   LockDisplay(dpy);
+   GetReqExtra(GLXSingle, cmdlen, req);
+   req->reqType = gc->majorOpcode;
+   req->contextTag = gc->currentContextTag;
+   req->glxCode = sop;
+   return (GLubyte *) (req) + sz_xGLXSingleReq;
+}
+#endif
+
+GLubyte *
+__glXSetupVendorRequest(__GLXcontext * gc, GLint code, GLint vop,
+                        GLint cmdlen)
+{
+   xGLXVendorPrivateReq *req;
+   Display *const dpy = gc->currentDpy;
+
+   (void) __glXFlushRenderBuffer(gc, gc->pc);
+   LockDisplay(dpy);
+   GetReqExtra(GLXVendorPrivate, cmdlen, req);
+   req->reqType = gc->majorOpcode;
+   req->glxCode = code;
+   req->vendorCode = vop;
+   req->contextTag = gc->currentContextTag;
+   return (GLubyte *) (req) + sz_xGLXVendorPrivateReq;
+}
diff --git a/src/glx/apple/specs/enum.spec b/src/glx/apple/specs/enum.spec
new file mode 100644 (file)
index 0000000..20f96f2
--- /dev/null
@@ -0,0 +1,7522 @@
+# This is the OpenGL and OpenGL ES enumerant registry.
+#
+# It is an extremely important file. Do not mess with it unless
+# you know what you're doing and have permission to do so.
+#
+# $Revision: 10971 $ on $Date: 2010-04-09 02:45:33 -0700 (Fri, 09 Apr 2010) $
+
+###############################################################################
+#
+# Before modifying this file, read the following:
+#
+#   ONLY the Khronos API Registrar (Jon Leech, jon 'at' alumni.caltech.edu)
+#   may allocate new enumerants outside the 'experimental' range described
+#   below. Any modifications to this file not performed by the Registrar
+#   are incompatible with the OpenGL API. The master copy of the registry,
+#   showing up-to-date enumerant allocations, is maintained in the
+#   OpenGL registry at
+#
+#      http://www.opengl.org/registry/
+#
+#   The following guidelines are thus only for reference purposes
+#   (unless you're the Registrar)
+#
+#   Enumerant values for extensions CANNOT be chosen arbitrarily, since
+#   the enumerant value space is shared by all GL implementations. It is
+#   therefore imperative that the procedures described in this file be
+#   followed carefully when allocating extension enum values.
+#
+# - Use tabs, not spaces.
+#
+# - When adding enum values for a new extension, use existing extensions
+#   as a guide.
+#
+# - When a vendor has committed to releasing a new extension and needs to
+#   allocate enum values for that extension, the vendor may request that the
+#   ARB allocate a previously unallocated block of 16 enum values, in the
+#   range 0x8000-0xFFFF, for the vendor's exclusive use.
+#
+# - The vendor that introduces an extension will allocate enum values for
+#   it as if it is a single-vendor extension, even if it is a multi-vendor
+#   (EXT) extension.
+#
+# - The file enum.spec is primarily a reference. The file enumext.spec
+#   contains enumerants for all OpenGL 1.2 and OpenGL extensions in a form
+#   used to generate <GL/glext.h>.
+#
+# - If a vendor hasn't yet released an extension, just add a comment to
+#   enum.spec that contains the name of the extension and the range of enum
+#   values used by the extension. When the vendor releases the extension,
+#   put the actual enum assignments in enum.spec and enumext.spec.
+#
+# - Allocate all of the enum values for an extension in a single contiguous
+#   block.
+#
+# - If an extension is experimental, allocate temporary enum values in the
+#   range 0x6000-0x8000 during development work.  When the vendor commits to
+#   releasing the extension, allocate permanent enum values (see below).
+#   There are two reasons for this policy:
+#
+#   1. It is desirable to keep extension enum values tightly packed and to
+#      make all of the enum values for an extension be contiguous.  This is
+#      possible only if permanent enum values for a new extension are not
+#      allocated until the extension spec is stable and the number of new
+#      enum values needed by the extension has therefore stopped changing.
+#
+#   2. OpenGL ARB policy is that a vendor may allocate a new block of 16
+#      extension enum values only if it has committed to releasing an
+#      extension that will use values in that block.
+#
+# - To allocate a new block of permanent enum values for an extension, do the
+#   following:
+#
+#   1. Start at the top of enum.spec and choose the first future_use
+#      range that is not allocated to another vendor and is large enough
+#      to contain the new block. This will almost certainly be the
+#      'Any_vendor_future_use' range near the end of enum.spec. This
+#      process helps keep allocated enum values tightly packed into
+#      the start of the 0x8000-0xFFFF range.
+#
+#   2. Allocate a block of enum values at the start of this range.  If
+#      the enum definitions are going into enumfuture.spec, add a comment
+#      to enum.spec that contains the name of the extension and the range
+#      of values in the new block. Use existing extensions as a guide.
+#
+#   3. Add the size of the block you just allocated to the start of the
+#      chosen future_use range.  If you have allocated the entire range,
+#      eliminate its future_use entry.
+#
+#   4. Note that there are historical enum allocations above 0xFFFF, but
+#      no new allocations will be made there in the forseeable future.
+#
+###############################################################################
+
+Extensions define:
+       VERSION_1_1                                     = 1
+       VERSION_1_2                                     = 1
+       VERSION_1_3                                     = 1
+       VERSION_1_4                                     = 1
+       VERSION_1_5                                     = 1
+       VERSION_2_0                                     = 1
+       VERSION_2_1                                     = 1
+       VERSION_3_0                                     = 1
+       VERSION_3_1                                     = 1
+       VERSION_3_2                                     = 1
+       ARB_imaging                                     = 1
+       EXT_abgr                                        = 1
+       EXT_blend_color                                 = 1
+       EXT_blend_logic_op                              = 1
+       EXT_blend_minmax                                = 1
+       EXT_blend_subtract                              = 1
+       EXT_cmyka                                       = 1
+       EXT_convolution                                 = 1
+       EXT_copy_texture                                = 1
+       EXT_histogram                                   = 1
+       EXT_packed_pixels                               = 1
+       EXT_point_parameters                            = 1
+       EXT_polygon_offset                              = 1
+       EXT_rescale_normal                              = 1
+       EXT_shared_texture_palette                      = 1
+       EXT_subtexture                                  = 1
+       EXT_texture                                     = 1
+       EXT_texture3D                                   = 1
+       EXT_texture_object                              = 1
+       EXT_vertex_array                                = 1
+       SGIS_detail_texture                             = 1
+       SGIS_fog_function                               = 1
+       SGIS_generate_mipmap                            = 1
+       SGIS_multisample                                = 1
+       SGIS_pixel_texture                              = 1
+       SGIS_point_line_texgen                          = 1
+       SGIS_point_parameters                           = 1
+       SGIS_sharpen_texture                            = 1
+       SGIS_texture4D                                  = 1
+       SGIS_texture_border_clamp                       = 1
+       SGIS_texture_edge_clamp                         = 1
+       SGIS_texture_filter4                            = 1
+       SGIS_texture_lod                                = 1
+       SGIS_texture_select                             = 1
+       SGIX_async                                      = 1
+       SGIX_async_histogram                            = 1
+       SGIX_async_pixel                                = 1
+       SGIX_blend_alpha_minmax                         = 1
+       SGIX_calligraphic_fragment                      = 1
+       SGIX_clipmap                                    = 1
+       SGIX_convolution_accuracy                       = 1
+       SGIX_depth_texture                              = 1
+       SGIX_flush_raster                               = 1
+       SGIX_fog_offset                                 = 1
+       SGIX_fragment_lighting                          = 1
+       SGIX_framezoom                                  = 1
+       SGIX_icc_texture                                = 1
+       SGIX_impact_pixel_texture                       = 1
+       SGIX_instruments                                = 1
+       SGIX_interlace                                  = 1
+       SGIX_ir_instrument1                             = 1
+       SGIX_list_priority                              = 1
+       SGIX_pixel_texture                              = 1
+       SGIX_pixel_tiles                                = 1
+       SGIX_polynomial_ffd                             = 1
+       SGIX_reference_plane                            = 1
+       SGIX_resample                                   = 1
+       SGIX_scalebias_hint                             = 1
+       SGIX_shadow                                     = 1
+       SGIX_shadow_ambient                             = 1
+       SGIX_sprite                                     = 1
+       SGIX_subsample                                  = 1
+       SGIX_tag_sample_buffer                          = 1
+       SGIX_texture_add_env                            = 1
+       SGIX_texture_coordinate_clamp                   = 1
+       SGIX_texture_lod_bias                           = 1
+       SGIX_texture_multi_buffer                       = 1
+       SGIX_texture_scale_bias                         = 1
+       SGIX_vertex_preclip                             = 1
+       SGIX_ycrcb                                      = 1
+       SGI_color_matrix                                = 1
+       SGI_color_table                                 = 1
+       SGI_texture_color_table                         = 1
+
+###############################################################################
+
+AttribMask enum:
+       CURRENT_BIT                                     = 0x00000001
+       POINT_BIT                                       = 0x00000002
+       LINE_BIT                                        = 0x00000004
+       POLYGON_BIT                                     = 0x00000008
+       POLYGON_STIPPLE_BIT                             = 0x00000010
+       PIXEL_MODE_BIT                                  = 0x00000020
+       LIGHTING_BIT                                    = 0x00000040
+       FOG_BIT                                         = 0x00000080
+       DEPTH_BUFFER_BIT                                = 0x00000100
+       ACCUM_BUFFER_BIT                                = 0x00000200
+       STENCIL_BUFFER_BIT                              = 0x00000400
+       VIEWPORT_BIT                                    = 0x00000800
+       TRANSFORM_BIT                                   = 0x00001000
+       ENABLE_BIT                                      = 0x00002000
+       COLOR_BUFFER_BIT                                = 0x00004000
+       HINT_BIT                                        = 0x00008000
+       EVAL_BIT                                        = 0x00010000
+       LIST_BIT                                        = 0x00020000
+       TEXTURE_BIT                                     = 0x00040000
+       SCISSOR_BIT                                     = 0x00080000
+       ALL_ATTRIB_BITS                                 = 0xFFFFFFFF
+#??? ALL_ATTRIB_BITS mask value changed to all-1s in OpenGL 1.3 - this affects covgl.
+#      use ARB_multisample MULTISAMPLE_BIT_ARB
+#      use EXT_multisample MULTISAMPLE_BIT_EXT
+#      use 3DFX_multisample MULTISAMPLE_BIT_3DFX
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+       MULTISAMPLE_BIT                                 = 0x20000000
+
+ARB_multisample enum:
+       MULTISAMPLE_BIT_ARB                             = 0x20000000
+
+EXT_multisample enum:
+       MULTISAMPLE_BIT_EXT                             = 0x20000000
+
+3DFX_multisample enum:
+       MULTISAMPLE_BIT_3DFX                            = 0x20000000
+
+###############################################################################
+
+# Note that COVERAGE_BUFFER_BIT_NV collides with AttribMask bit
+# HINT_BIT. This is OK since the extension is for OpenGL ES 2, which
+# doesn't have attribute groups.
+ClearBufferMask enum:
+       use AttribMask DEPTH_BUFFER_BIT                 # = 0x00000100
+       use AttribMask ACCUM_BUFFER_BIT                 # = 0x00000200
+       use AttribMask STENCIL_BUFFER_BIT               # = 0x00000400
+       use AttribMask COLOR_BUFFER_BIT                 # = 0x00004000
+       use NV_coverage_sample COVERAGE_BUFFER_BIT_NV   # = 0x00008000
+
+###############################################################################
+
+ClientAttribMask enum:
+       CLIENT_PIXEL_STORE_BIT                          = 0x00000001
+       CLIENT_VERTEX_ARRAY_BIT                         = 0x00000002
+       CLIENT_ALL_ATTRIB_BITS                          = 0xFFFFFFFF
+
+###############################################################################
+
+# There's no obvious better place to put non-attribute-group mask bits
+VERSION_3_0 enum:
+       use ARB_map_buffer_range            MAP_READ_BIT
+       use ARB_map_buffer_range            MAP_WRITE_BIT
+       use ARB_map_buffer_range            MAP_INVALIDATE_RANGE_BIT
+       use ARB_map_buffer_range            MAP_INVALIDATE_BUFFER_BIT
+       use ARB_map_buffer_range            MAP_FLUSH_EXPLICIT_BIT
+       use ARB_map_buffer_range            MAP_UNSYNCHRONIZED_BIT
+
+ARB_map_buffer_range enum:
+       MAP_READ_BIT                                    = 0x0001    # VERSION_3_0 / ARB_mbr
+       MAP_WRITE_BIT                                   = 0x0002    # VERSION_3_0 / ARB_mbr
+       MAP_INVALIDATE_RANGE_BIT                        = 0x0004    # VERSION_3_0 / ARB_mbr
+       MAP_INVALIDATE_BUFFER_BIT                       = 0x0008    # VERSION_3_0 / ARB_mbr
+       MAP_FLUSH_EXPLICIT_BIT                          = 0x0010    # VERSION_3_0 / ARB_mbr
+       MAP_UNSYNCHRONIZED_BIT                          = 0x0020    # VERSION_3_0 / ARB_mbr
+
+###############################################################################
+
+VERSION_3_0 enum:
+       CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT             = 0x0001    # VERSION_3_0
+
+###############################################################################
+
+Boolean enum:
+       FALSE                                           = 0
+       TRUE                                            = 1
+
+###############################################################################
+
+BeginMode enum:
+       POINTS                                          = 0x0000
+       LINES                                           = 0x0001
+       LINE_LOOP                                       = 0x0002
+       LINE_STRIP                                      = 0x0003
+       TRIANGLES                                       = 0x0004
+       TRIANGLE_STRIP                                  = 0x0005
+       TRIANGLE_FAN                                    = 0x0006
+       QUADS                                           = 0x0007
+       QUAD_STRIP                                      = 0x0008
+       POLYGON                                         = 0x0009
+
+VERSION_3_2 enum:
+       LINES_ADJACENCY                                 = 0x000A
+       LINE_STRIP_ADJACENCY                            = 0x000B
+       TRIANGLES_ADJACENCY                             = 0x000C
+       TRIANGLE_STRIP_ADJACENCY                        = 0x000D
+
+ARB_geometry_shader4 enum: (additional; see below)
+       LINES_ADJACENCY_ARB                             = 0x000A
+       LINE_STRIP_ADJACENCY_ARB                        = 0x000B
+       TRIANGLES_ADJACENCY_ARB                         = 0x000C
+       TRIANGLE_STRIP_ADJACENCY_ARB                    = 0x000D
+
+NV_geometry_program4 enum: (additional; see below)
+       LINES_ADJACENCY_EXT                             = 0x000A
+       LINE_STRIP_ADJACENCY_EXT                        = 0x000B
+       TRIANGLES_ADJACENCY_EXT                         = 0x000C
+       TRIANGLE_STRIP_ADJACENCY_EXT                    = 0x000D
+
+# BeginMode_future_use: 0x000E
+
+###############################################################################
+
+AccumOp enum:
+       ACCUM                                           = 0x0100
+       LOAD                                            = 0x0101
+       RETURN                                          = 0x0102
+       MULT                                            = 0x0103
+       ADD                                             = 0x0104
+
+###############################################################################
+
+AlphaFunction enum:
+       NEVER                                           = 0x0200
+       LESS                                            = 0x0201
+       EQUAL                                           = 0x0202
+       LEQUAL                                          = 0x0203
+       GREATER                                         = 0x0204
+       NOTEQUAL                                        = 0x0205
+       GEQUAL                                          = 0x0206
+       ALWAYS                                          = 0x0207
+
+###############################################################################
+
+BlendingFactorDest enum:
+       ZERO                                            = 0
+       ONE                                             = 1
+       SRC_COLOR                                       = 0x0300
+       ONE_MINUS_SRC_COLOR                             = 0x0301
+       SRC_ALPHA                                       = 0x0302
+       ONE_MINUS_SRC_ALPHA                             = 0x0303
+       DST_ALPHA                                       = 0x0304
+       ONE_MINUS_DST_ALPHA                             = 0x0305
+       use EXT_blend_color CONSTANT_COLOR_EXT
+       use EXT_blend_color ONE_MINUS_CONSTANT_COLOR_EXT
+       use EXT_blend_color CONSTANT_ALPHA_EXT
+       use EXT_blend_color ONE_MINUS_CONSTANT_ALPHA_EXT
+
+###############################################################################
+
+BlendingFactorSrc enum:
+       use BlendingFactorDest ZERO
+       use BlendingFactorDest ONE
+       DST_COLOR                                       = 0x0306
+       ONE_MINUS_DST_COLOR                             = 0x0307
+       SRC_ALPHA_SATURATE                              = 0x0308
+       use BlendingFactorDest SRC_ALPHA
+       use BlendingFactorDest ONE_MINUS_SRC_ALPHA
+       use BlendingFactorDest DST_ALPHA
+       use BlendingFactorDest ONE_MINUS_DST_ALPHA
+       use EXT_blend_color CONSTANT_COLOR_EXT
+       use EXT_blend_color ONE_MINUS_CONSTANT_COLOR_EXT
+       use EXT_blend_color CONSTANT_ALPHA_EXT
+       use EXT_blend_color ONE_MINUS_CONSTANT_ALPHA_EXT
+
+###############################################################################
+
+BlendEquationModeEXT enum:
+       use GetPName LOGIC_OP
+       use EXT_blend_minmax FUNC_ADD_EXT
+       use EXT_blend_minmax MIN_EXT
+       use EXT_blend_minmax MAX_EXT
+       use EXT_blend_subtract FUNC_SUBTRACT_EXT
+       use EXT_blend_subtract FUNC_REVERSE_SUBTRACT_EXT
+       use SGIX_blend_alpha_minmax ALPHA_MIN_SGIX
+       use SGIX_blend_alpha_minmax ALPHA_MAX_SGIX
+
+###############################################################################
+
+ColorMaterialFace enum:
+       use DrawBufferMode FRONT
+       use DrawBufferMode BACK
+       use DrawBufferMode FRONT_AND_BACK
+
+###############################################################################
+
+ColorMaterialParameter enum:
+       use LightParameter AMBIENT
+       use LightParameter DIFFUSE
+       use LightParameter SPECULAR
+       use MaterialParameter EMISSION
+       use MaterialParameter AMBIENT_AND_DIFFUSE
+
+###############################################################################
+
+ColorPointerType enum:
+       use DataType BYTE
+       use DataType UNSIGNED_BYTE
+       use DataType SHORT
+       use DataType UNSIGNED_SHORT
+       use DataType INT
+       use DataType UNSIGNED_INT
+       use DataType FLOAT
+       use DataType DOUBLE
+
+###############################################################################
+
+ColorTableParameterPNameSGI enum:
+       use SGI_color_table COLOR_TABLE_SCALE_SGI
+       use SGI_color_table COLOR_TABLE_BIAS_SGI
+
+###############################################################################
+
+ColorTableTargetSGI enum:
+       use SGI_color_table COLOR_TABLE_SGI
+       use SGI_color_table POST_CONVOLUTION_COLOR_TABLE_SGI
+       use SGI_color_table POST_COLOR_MATRIX_COLOR_TABLE_SGI
+       use SGI_color_table PROXY_COLOR_TABLE_SGI
+       use SGI_color_table PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI
+       use SGI_color_table PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI
+       use SGI_texture_color_table TEXTURE_COLOR_TABLE_SGI
+       use SGI_texture_color_table PROXY_TEXTURE_COLOR_TABLE_SGI
+
+###############################################################################
+
+ConvolutionBorderModeEXT enum:
+       use EXT_convolution REDUCE_EXT
+
+###############################################################################
+
+ConvolutionParameterEXT enum:
+       use EXT_convolution CONVOLUTION_BORDER_MODE_EXT
+       use EXT_convolution CONVOLUTION_FILTER_SCALE_EXT
+       use EXT_convolution CONVOLUTION_FILTER_BIAS_EXT
+
+###############################################################################
+
+ConvolutionTargetEXT enum:
+       use EXT_convolution CONVOLUTION_1D_EXT
+       use EXT_convolution CONVOLUTION_2D_EXT
+
+###############################################################################
+
+CullFaceMode enum:
+       use DrawBufferMode FRONT
+       use DrawBufferMode BACK
+       use DrawBufferMode FRONT_AND_BACK
+
+###############################################################################
+
+DepthFunction enum:
+       use AlphaFunction NEVER
+       use AlphaFunction LESS
+       use AlphaFunction EQUAL
+       use AlphaFunction LEQUAL
+       use AlphaFunction GREATER
+       use AlphaFunction NOTEQUAL
+       use AlphaFunction GEQUAL
+       use AlphaFunction ALWAYS
+
+###############################################################################
+
+DrawBufferMode enum:
+       NONE                                            = 0
+       FRONT_LEFT                                      = 0x0400
+       FRONT_RIGHT                                     = 0x0401
+       BACK_LEFT                                       = 0x0402
+       BACK_RIGHT                                      = 0x0403
+       FRONT                                           = 0x0404
+       BACK                                            = 0x0405
+       LEFT                                            = 0x0406
+       RIGHT                                           = 0x0407
+       FRONT_AND_BACK                                  = 0x0408
+       AUX0                                            = 0x0409
+       AUX1                                            = 0x040A
+       AUX2                                            = 0x040B
+       AUX3                                            = 0x040C
+
+# Aliases DrawBufferMode enum above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+#      NONE_OES                                        = 0
+
+###############################################################################
+
+EnableCap enum:
+       use GetPName FOG
+       use GetPName LIGHTING
+       use GetPName TEXTURE_1D
+       use GetPName TEXTURE_2D
+       use GetPName LINE_STIPPLE
+       use GetPName POLYGON_STIPPLE
+       use GetPName CULL_FACE
+       use GetPName ALPHA_TEST
+       use GetPName BLEND
+       use GetPName INDEX_LOGIC_OP
+       use GetPName COLOR_LOGIC_OP
+       use GetPName DITHER
+       use GetPName STENCIL_TEST
+       use GetPName DEPTH_TEST
+       use GetPName CLIP_PLANE0
+       use GetPName CLIP_PLANE1
+       use GetPName CLIP_PLANE2
+       use GetPName CLIP_PLANE3
+       use GetPName CLIP_PLANE4
+       use GetPName CLIP_PLANE5
+       use GetPName LIGHT0
+       use GetPName LIGHT1
+       use GetPName LIGHT2
+       use GetPName LIGHT3
+       use GetPName LIGHT4
+       use GetPName LIGHT5
+       use GetPName LIGHT6
+       use GetPName LIGHT7
+       use GetPName TEXTURE_GEN_S
+       use GetPName TEXTURE_GEN_T
+       use GetPName TEXTURE_GEN_R
+       use GetPName TEXTURE_GEN_Q
+       use GetPName MAP1_VERTEX_3
+       use GetPName MAP1_VERTEX_4
+       use GetPName MAP1_COLOR_4
+       use GetPName MAP1_INDEX
+       use GetPName MAP1_NORMAL
+       use GetPName MAP1_TEXTURE_COORD_1
+       use GetPName MAP1_TEXTURE_COORD_2
+       use GetPName MAP1_TEXTURE_COORD_3
+       use GetPName MAP1_TEXTURE_COORD_4
+       use GetPName MAP2_VERTEX_3
+       use GetPName MAP2_VERTEX_4
+       use GetPName MAP2_COLOR_4
+       use GetPName MAP2_INDEX
+       use GetPName MAP2_NORMAL
+       use GetPName MAP2_TEXTURE_COORD_1
+       use GetPName MAP2_TEXTURE_COORD_2
+       use GetPName MAP2_TEXTURE_COORD_3
+       use GetPName MAP2_TEXTURE_COORD_4
+       use GetPName POINT_SMOOTH
+       use GetPName LINE_SMOOTH
+       use GetPName POLYGON_SMOOTH
+       use GetPName SCISSOR_TEST
+       use GetPName COLOR_MATERIAL
+       use GetPName NORMALIZE
+       use GetPName AUTO_NORMAL
+       use GetPName POLYGON_OFFSET_POINT
+       use GetPName POLYGON_OFFSET_LINE
+       use GetPName POLYGON_OFFSET_FILL
+       use GetPName VERTEX_ARRAY
+       use GetPName NORMAL_ARRAY
+       use GetPName COLOR_ARRAY
+       use GetPName INDEX_ARRAY
+       use GetPName TEXTURE_COORD_ARRAY
+       use GetPName EDGE_FLAG_ARRAY
+       use EXT_convolution CONVOLUTION_1D_EXT
+       use EXT_convolution CONVOLUTION_2D_EXT
+       use EXT_convolution SEPARABLE_2D_EXT
+       use EXT_histogram HISTOGRAM_EXT
+       use EXT_histogram MINMAX_EXT
+       use EXT_rescale_normal RESCALE_NORMAL_EXT
+       use EXT_shared_texture_palette SHARED_TEXTURE_PALETTE_EXT
+       use EXT_texture3D TEXTURE_3D_EXT
+       use SGIS_multisample MULTISAMPLE_SGIS
+       use SGIS_multisample SAMPLE_ALPHA_TO_MASK_SGIS
+       use SGIS_multisample SAMPLE_ALPHA_TO_ONE_SGIS
+       use SGIS_multisample SAMPLE_MASK_SGIS
+       use SGIS_texture4D TEXTURE_4D_SGIS
+       use SGIX_async_histogram ASYNC_HISTOGRAM_SGIX
+       use SGIX_async_pixel ASYNC_TEX_IMAGE_SGIX
+       use SGIX_async_pixel ASYNC_DRAW_PIXELS_SGIX
+       use SGIX_async_pixel ASYNC_READ_PIXELS_SGIX
+       use SGIX_calligraphic_fragment CALLIGRAPHIC_FRAGMENT_SGIX
+       use SGIX_fog_offset FOG_OFFSET_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHTING_SGIX
+       use SGIX_fragment_lighting FRAGMENT_COLOR_MATERIAL_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT0_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT1_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT2_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT3_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT4_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT5_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT6_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT7_SGIX
+       use SGIX_framezoom FRAMEZOOM_SGIX
+       use SGIX_interlace INTERLACE_SGIX
+       use SGIX_ir_instrument1 IR_INSTRUMENT1_SGIX
+       use SGIX_pixel_texture PIXEL_TEX_GEN_SGIX
+       use SGIS_pixel_texture PIXEL_TEXTURE_SGIS
+       use SGIX_reference_plane REFERENCE_PLANE_SGIX
+       use SGIX_sprite SPRITE_SGIX
+       use SGI_color_table COLOR_TABLE_SGI
+       use SGI_color_table POST_CONVOLUTION_COLOR_TABLE_SGI
+       use SGI_color_table POST_COLOR_MATRIX_COLOR_TABLE_SGI
+       use SGI_texture_color_table TEXTURE_COLOR_TABLE_SGI
+
+###############################################################################
+
+ErrorCode enum:
+       NO_ERROR                                        = 0
+       INVALID_ENUM                                    = 0x0500
+       INVALID_VALUE                                   = 0x0501
+       INVALID_OPERATION                               = 0x0502
+       STACK_OVERFLOW                                  = 0x0503
+       STACK_UNDERFLOW                                 = 0x0504
+       OUT_OF_MEMORY                                   = 0x0505
+       use EXT_histogram TABLE_TOO_LARGE_EXT
+       use EXT_texture TEXTURE_TOO_LARGE_EXT
+
+# Additional error codes
+
+VERSION_3_0 enum:
+#      use ARB_framebuffer_object          INVALID_FRAMEBUFFER_OPERATION
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+       INVALID_FRAMEBUFFER_OPERATION                   = 0x0506    # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_object enum:
+       INVALID_FRAMEBUFFER_OPERATION_EXT               = 0x0506
+
+# Aliases EXT_fbo enum above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+       INVALID_FRAMEBUFFER_OPERATION_OES               = 0x0506
+
+###############################################################################
+
+FeedbackType enum:
+       2D                                              = 0x0600
+       3D                                              = 0x0601
+       3D_COLOR                                        = 0x0602
+       3D_COLOR_TEXTURE                                = 0x0603
+       4D_COLOR_TEXTURE                                = 0x0604
+
+###############################################################################
+
+FeedBackToken enum:
+       PASS_THROUGH_TOKEN                              = 0x0700
+       POINT_TOKEN                                     = 0x0701
+       LINE_TOKEN                                      = 0x0702
+       POLYGON_TOKEN                                   = 0x0703
+       BITMAP_TOKEN                                    = 0x0704
+       DRAW_PIXEL_TOKEN                                = 0x0705
+       COPY_PIXEL_TOKEN                                = 0x0706
+       LINE_RESET_TOKEN                                = 0x0707
+
+###############################################################################
+
+FfdMaskSGIX enum:
+       TEXTURE_DEFORMATION_BIT_SGIX                    = 0x00000001
+       GEOMETRY_DEFORMATION_BIT_SGIX                   = 0x00000002
+
+###############################################################################
+
+FfdTargetSGIX enum:
+       use SGIX_polynomial_ffd GEOMETRY_DEFORMATION_SGIX
+       use SGIX_polynomial_ffd TEXTURE_DEFORMATION_SGIX
+
+###############################################################################
+
+FogMode enum:
+       use TextureMagFilter LINEAR
+       EXP                                             = 0x0800
+       EXP2                                            = 0x0801
+       use SGIS_fog_function FOG_FUNC_SGIS
+
+###############################################################################
+
+FogParameter enum:
+       use GetPName FOG_COLOR
+       use GetPName FOG_DENSITY
+       use GetPName FOG_END
+       use GetPName FOG_INDEX
+       use GetPName FOG_MODE
+       use GetPName FOG_START
+       use SGIX_fog_offset FOG_OFFSET_VALUE_SGIX
+
+###############################################################################
+
+FragmentLightModelParameterSGIX enum:
+       use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX
+
+###############################################################################
+
+FrontFaceDirection enum:
+       CW                                              = 0x0900
+       CCW                                             = 0x0901
+
+###############################################################################
+
+GetColorTableParameterPNameSGI enum:
+       use SGI_color_table COLOR_TABLE_SCALE_SGI
+       use SGI_color_table COLOR_TABLE_BIAS_SGI
+       use SGI_color_table COLOR_TABLE_FORMAT_SGI
+       use SGI_color_table COLOR_TABLE_WIDTH_SGI
+       use SGI_color_table COLOR_TABLE_RED_SIZE_SGI
+       use SGI_color_table COLOR_TABLE_GREEN_SIZE_SGI
+       use SGI_color_table COLOR_TABLE_BLUE_SIZE_SGI
+       use SGI_color_table COLOR_TABLE_ALPHA_SIZE_SGI
+       use SGI_color_table COLOR_TABLE_LUMINANCE_SIZE_SGI
+       use SGI_color_table COLOR_TABLE_INTENSITY_SIZE_SGI
+
+###############################################################################
+
+GetConvolutionParameter enum:
+       use EXT_convolution CONVOLUTION_BORDER_MODE_EXT
+       use EXT_convolution CONVOLUTION_FILTER_SCALE_EXT
+       use EXT_convolution CONVOLUTION_FILTER_BIAS_EXT
+       use EXT_convolution CONVOLUTION_FORMAT_EXT
+       use EXT_convolution CONVOLUTION_WIDTH_EXT
+       use EXT_convolution CONVOLUTION_HEIGHT_EXT
+       use EXT_convolution MAX_CONVOLUTION_WIDTH_EXT
+       use EXT_convolution MAX_CONVOLUTION_HEIGHT_EXT
+
+###############################################################################
+
+GetHistogramParameterPNameEXT enum:
+       use EXT_histogram HISTOGRAM_WIDTH_EXT
+       use EXT_histogram HISTOGRAM_FORMAT_EXT
+       use EXT_histogram HISTOGRAM_RED_SIZE_EXT
+       use EXT_histogram HISTOGRAM_GREEN_SIZE_EXT
+       use EXT_histogram HISTOGRAM_BLUE_SIZE_EXT
+       use EXT_histogram HISTOGRAM_ALPHA_SIZE_EXT
+       use EXT_histogram HISTOGRAM_LUMINANCE_SIZE_EXT
+       use EXT_histogram HISTOGRAM_SINK_EXT
+
+###############################################################################
+
+GetMapQuery enum:
+       COEFF                                           = 0x0A00
+       ORDER                                           = 0x0A01
+       DOMAIN                                          = 0x0A02
+
+###############################################################################
+
+GetMinmaxParameterPNameEXT enum:
+       use EXT_histogram MINMAX_FORMAT_EXT
+       use EXT_histogram MINMAX_SINK_EXT
+
+###############################################################################
+
+GetPixelMap enum:
+       PIXEL_MAP_I_TO_I                                = 0x0C70
+       PIXEL_MAP_S_TO_S                                = 0x0C71
+       PIXEL_MAP_I_TO_R                                = 0x0C72
+       PIXEL_MAP_I_TO_G                                = 0x0C73
+       PIXEL_MAP_I_TO_B                                = 0x0C74
+       PIXEL_MAP_I_TO_A                                = 0x0C75
+       PIXEL_MAP_R_TO_R                                = 0x0C76
+       PIXEL_MAP_G_TO_G                                = 0x0C77
+       PIXEL_MAP_B_TO_B                                = 0x0C78
+       PIXEL_MAP_A_TO_A                                = 0x0C79
+
+###############################################################################
+
+GetPointervPName enum:
+       VERTEX_ARRAY_POINTER                            = 0x808E
+       NORMAL_ARRAY_POINTER                            = 0x808F
+       COLOR_ARRAY_POINTER                             = 0x8090
+       INDEX_ARRAY_POINTER                             = 0x8091
+       TEXTURE_COORD_ARRAY_POINTER                     = 0x8092
+       EDGE_FLAG_ARRAY_POINTER                         = 0x8093
+       FEEDBACK_BUFFER_POINTER                         = 0x0DF0
+       SELECTION_BUFFER_POINTER                        = 0x0DF3
+       use SGIX_instruments INSTRUMENT_BUFFER_POINTER_SGIX
+
+###############################################################################
+
+# the columns after the comment symbol (#) indicate: number of params, type
+# (F - float, D - double, I - integer) for the returned values
+GetPName enum:
+       CURRENT_COLOR                                   = 0x0B00 # 4 F
+       CURRENT_INDEX                                   = 0x0B01 # 1 F
+       CURRENT_NORMAL                                  = 0x0B02 # 3 F
+       CURRENT_TEXTURE_COORDS                          = 0x0B03 # 4 F
+       CURRENT_RASTER_COLOR                            = 0x0B04 # 4 F
+       CURRENT_RASTER_INDEX                            = 0x0B05 # 1 F
+       CURRENT_RASTER_TEXTURE_COORDS                   = 0x0B06 # 4 F
+       CURRENT_RASTER_POSITION                         = 0x0B07 # 4 F
+       CURRENT_RASTER_POSITION_VALID                   = 0x0B08 # 1 I
+       CURRENT_RASTER_DISTANCE                         = 0x0B09 # 1 F
+
+       POINT_SMOOTH                                    = 0x0B10 # 1 I
+       POINT_SIZE                                      = 0x0B11 # 1 F
+       POINT_SIZE_RANGE                                = 0x0B12 # 2 F
+       POINT_SIZE_GRANULARITY                          = 0x0B13 # 1 F
+
+       LINE_SMOOTH                                     = 0x0B20 # 1 I
+       LINE_WIDTH                                      = 0x0B21 # 1 F
+       LINE_WIDTH_RANGE                                = 0x0B22 # 2 F
+       LINE_WIDTH_GRANULARITY                          = 0x0B23 # 1 F
+       LINE_STIPPLE                                    = 0x0B24 # 1 I
+       LINE_STIPPLE_PATTERN                            = 0x0B25 # 1 I
+       LINE_STIPPLE_REPEAT                             = 0x0B26 # 1 I
+       use VERSION_1_2 SMOOTH_POINT_SIZE_RANGE
+       use VERSION_1_2 SMOOTH_POINT_SIZE_GRANULARITY
+       use VERSION_1_2 SMOOTH_LINE_WIDTH_RANGE
+       use VERSION_1_2 SMOOTH_LINE_WIDTH_GRANULARITY
+       use VERSION_1_2 ALIASED_POINT_SIZE_RANGE
+       use VERSION_1_2 ALIASED_LINE_WIDTH_RANGE
+
+       LIST_MODE                                       = 0x0B30 # 1 I
+       MAX_LIST_NESTING                                = 0x0B31 # 1 I
+       LIST_BASE                                       = 0x0B32 # 1 I
+       LIST_INDEX                                      = 0x0B33 # 1 I
+
+       POLYGON_MODE                                    = 0x0B40 # 2 I
+       POLYGON_SMOOTH                                  = 0x0B41 # 1 I
+       POLYGON_STIPPLE                                 = 0x0B42 # 1 I
+       EDGE_FLAG                                       = 0x0B43 # 1 I
+       CULL_FACE                                       = 0x0B44 # 1 I
+       CULL_FACE_MODE                                  = 0x0B45 # 1 I
+       FRONT_FACE                                      = 0x0B46 # 1 I
+
+       LIGHTING                                        = 0x0B50 # 1 I
+       LIGHT_MODEL_LOCAL_VIEWER                        = 0x0B51 # 1 I
+       LIGHT_MODEL_TWO_SIDE                            = 0x0B52 # 1 I
+       LIGHT_MODEL_AMBIENT                             = 0x0B53 # 4 F
+       SHADE_MODEL                                     = 0x0B54 # 1 I
+       COLOR_MATERIAL_FACE                             = 0x0B55 # 1 I
+       COLOR_MATERIAL_PARAMETER                        = 0x0B56 # 1 I
+       COLOR_MATERIAL                                  = 0x0B57 # 1 I
+
+       FOG                                             = 0x0B60 # 1 I
+       FOG_INDEX                                       = 0x0B61 # 1 I
+       FOG_DENSITY                                     = 0x0B62 # 1 F
+       FOG_START                                       = 0x0B63 # 1 F
+       FOG_END                                         = 0x0B64 # 1 F
+       FOG_MODE                                        = 0x0B65 # 1 I
+       FOG_COLOR                                       = 0x0B66 # 4 F
+
+       DEPTH_RANGE                                     = 0x0B70 # 2 F
+       DEPTH_TEST                                      = 0x0B71 # 1 I
+       DEPTH_WRITEMASK                                 = 0x0B72 # 1 I
+       DEPTH_CLEAR_VALUE                               = 0x0B73 # 1 F
+       DEPTH_FUNC                                      = 0x0B74 # 1 I
+
+       ACCUM_CLEAR_VALUE                               = 0x0B80 # 4 F
+
+       STENCIL_TEST                                    = 0x0B90 # 1 I
+       STENCIL_CLEAR_VALUE                             = 0x0B91 # 1 I
+       STENCIL_FUNC                                    = 0x0B92 # 1 I
+       STENCIL_VALUE_MASK                              = 0x0B93 # 1 I
+       STENCIL_FAIL                                    = 0x0B94 # 1 I
+       STENCIL_PASS_DEPTH_FAIL                         = 0x0B95 # 1 I
+       STENCIL_PASS_DEPTH_PASS                         = 0x0B96 # 1 I
+       STENCIL_REF                                     = 0x0B97 # 1 I
+       STENCIL_WRITEMASK                               = 0x0B98 # 1 I
+
+       MATRIX_MODE                                     = 0x0BA0 # 1 I
+       NORMALIZE                                       = 0x0BA1 # 1 I
+       VIEWPORT                                        = 0x0BA2 # 4 I
+       MODELVIEW_STACK_DEPTH                           = 0x0BA3 # 1 I
+       PROJECTION_STACK_DEPTH                          = 0x0BA4 # 1 I
+       TEXTURE_STACK_DEPTH                             = 0x0BA5 # 1 I
+       MODELVIEW_MATRIX                                = 0x0BA6 # 16 F
+       PROJECTION_MATRIX                               = 0x0BA7 # 16 F
+       TEXTURE_MATRIX                                  = 0x0BA8 # 16 F
+
+       ATTRIB_STACK_DEPTH                              = 0x0BB0 # 1 I
+       CLIENT_ATTRIB_STACK_DEPTH                       = 0x0BB1 # 1 I
+
+       ALPHA_TEST                                      = 0x0BC0 # 1 I
+       ALPHA_TEST_FUNC                                 = 0x0BC1 # 1 I
+       ALPHA_TEST_REF                                  = 0x0BC2 # 1 F
+
+       DITHER                                          = 0x0BD0 # 1 I
+
+       BLEND_DST                                       = 0x0BE0 # 1 I
+       BLEND_SRC                                       = 0x0BE1 # 1 I
+       BLEND                                           = 0x0BE2 # 1 I
+
+       LOGIC_OP_MODE                                   = 0x0BF0 # 1 I
+       INDEX_LOGIC_OP                                  = 0x0BF1 # 1 I
+       LOGIC_OP                                        = 0x0BF1 # 1 I
+       COLOR_LOGIC_OP                                  = 0x0BF2 # 1 I
+
+       AUX_BUFFERS                                     = 0x0C00 # 1 I
+       DRAW_BUFFER                                     = 0x0C01 # 1 I
+       READ_BUFFER                                     = 0x0C02 # 1 I
+
+       SCISSOR_BOX                                     = 0x0C10 # 4 I
+       SCISSOR_TEST                                    = 0x0C11 # 1 I
+
+       INDEX_CLEAR_VALUE                               = 0x0C20 # 1 I
+       INDEX_WRITEMASK                                 = 0x0C21 # 1 I
+       COLOR_CLEAR_VALUE                               = 0x0C22 # 4 F
+       COLOR_WRITEMASK                                 = 0x0C23 # 4 I
+
+       INDEX_MODE                                      = 0x0C30 # 1 I
+       RGBA_MODE                                       = 0x0C31 # 1 I
+       DOUBLEBUFFER                                    = 0x0C32 # 1 I
+       STEREO                                          = 0x0C33 # 1 I
+
+       RENDER_MODE                                     = 0x0C40 # 1 I
+
+       PERSPECTIVE_CORRECTION_HINT                     = 0x0C50 # 1 I
+       POINT_SMOOTH_HINT                               = 0x0C51 # 1 I
+       LINE_SMOOTH_HINT                                = 0x0C52 # 1 I
+       POLYGON_SMOOTH_HINT                             = 0x0C53 # 1 I
+       FOG_HINT                                        = 0x0C54 # 1 I
+
+       TEXTURE_GEN_S                                   = 0x0C60 # 1 I
+       TEXTURE_GEN_T                                   = 0x0C61 # 1 I
+       TEXTURE_GEN_R                                   = 0x0C62 # 1 I
+       TEXTURE_GEN_Q                                   = 0x0C63 # 1 I
+
+       PIXEL_MAP_I_TO_I_SIZE                           = 0x0CB0 # 1 I
+       PIXEL_MAP_S_TO_S_SIZE                           = 0x0CB1 # 1 I
+       PIXEL_MAP_I_TO_R_SIZE                           = 0x0CB2 # 1 I
+       PIXEL_MAP_I_TO_G_SIZE                           = 0x0CB3 # 1 I
+       PIXEL_MAP_I_TO_B_SIZE                           = 0x0CB4 # 1 I
+       PIXEL_MAP_I_TO_A_SIZE                           = 0x0CB5 # 1 I
+       PIXEL_MAP_R_TO_R_SIZE                           = 0x0CB6 # 1 I
+       PIXEL_MAP_G_TO_G_SIZE                           = 0x0CB7 # 1 I
+       PIXEL_MAP_B_TO_B_SIZE                           = 0x0CB8 # 1 I
+       PIXEL_MAP_A_TO_A_SIZE                           = 0x0CB9 # 1 I
+
+       UNPACK_SWAP_BYTES                               = 0x0CF0 # 1 I
+       UNPACK_LSB_FIRST                                = 0x0CF1 # 1 I
+       UNPACK_ROW_LENGTH                               = 0x0CF2 # 1 I
+       UNPACK_SKIP_ROWS                                = 0x0CF3 # 1 I
+       UNPACK_SKIP_PIXELS                              = 0x0CF4 # 1 I
+       UNPACK_ALIGNMENT                                = 0x0CF5 # 1 I
+
+       PACK_SWAP_BYTES                                 = 0x0D00 # 1 I
+       PACK_LSB_FIRST                                  = 0x0D01 # 1 I
+       PACK_ROW_LENGTH                                 = 0x0D02 # 1 I
+       PACK_SKIP_ROWS                                  = 0x0D03 # 1 I
+       PACK_SKIP_PIXELS                                = 0x0D04 # 1 I
+       PACK_ALIGNMENT                                  = 0x0D05 # 1 I
+
+       MAP_COLOR                                       = 0x0D10 # 1 I
+       MAP_STENCIL                                     = 0x0D11 # 1 I
+       INDEX_SHIFT                                     = 0x0D12 # 1 I
+       INDEX_OFFSET                                    = 0x0D13 # 1 I
+       RED_SCALE                                       = 0x0D14 # 1 F
+       RED_BIAS                                        = 0x0D15 # 1 F
+       ZOOM_X                                          = 0x0D16 # 1 F
+       ZOOM_Y                                          = 0x0D17 # 1 F
+       GREEN_SCALE                                     = 0x0D18 # 1 F
+       GREEN_BIAS                                      = 0x0D19 # 1 F
+       BLUE_SCALE                                      = 0x0D1A # 1 F
+       BLUE_BIAS                                       = 0x0D1B # 1 F
+       ALPHA_SCALE                                     = 0x0D1C # 1 F
+       ALPHA_BIAS                                      = 0x0D1D # 1 F
+       DEPTH_SCALE                                     = 0x0D1E # 1 F
+       DEPTH_BIAS                                      = 0x0D1F # 1 F
+
+       MAX_EVAL_ORDER                                  = 0x0D30 # 1 I
+       MAX_LIGHTS                                      = 0x0D31 # 1 I
+
+# VERSION_3_0 enum: (aliases)
+       MAX_CLIP_DISTANCES                              = 0x0D32    # VERSION_3_0   # alias GL_MAX_CLIP_PLANES
+
+       MAX_CLIP_PLANES                                 = 0x0D32 # 1 I
+       MAX_TEXTURE_SIZE                                = 0x0D33 # 1 I
+       MAX_PIXEL_MAP_TABLE                             = 0x0D34 # 1 I
+       MAX_ATTRIB_STACK_DEPTH                          = 0x0D35 # 1 I
+       MAX_MODELVIEW_STACK_DEPTH                       = 0x0D36 # 1 I
+       MAX_NAME_STACK_DEPTH                            = 0x0D37 # 1 I
+       MAX_PROJECTION_STACK_DEPTH                      = 0x0D38 # 1 I
+       MAX_TEXTURE_STACK_DEPTH                         = 0x0D39 # 1 I
+       MAX_VIEWPORT_DIMS                               = 0x0D3A # 2 F
+       MAX_CLIENT_ATTRIB_STACK_DEPTH                   = 0x0D3B # 1 I
+
+       SUBPIXEL_BITS                                   = 0x0D50 # 1 I
+       INDEX_BITS                                      = 0x0D51 # 1 I
+       RED_BITS                                        = 0x0D52 # 1 I
+       GREEN_BITS                                      = 0x0D53 # 1 I
+       BLUE_BITS                                       = 0x0D54 # 1 I
+       ALPHA_BITS                                      = 0x0D55 # 1 I
+       DEPTH_BITS                                      = 0x0D56 # 1 I
+       STENCIL_BITS                                    = 0x0D57 # 1 I
+       ACCUM_RED_BITS                                  = 0x0D58 # 1 I
+       ACCUM_GREEN_BITS                                = 0x0D59 # 1 I
+       ACCUM_BLUE_BITS                                 = 0x0D5A # 1 I
+       ACCUM_ALPHA_BITS                                = 0x0D5B # 1 I
+
+       NAME_STACK_DEPTH                                = 0x0D70 # 1 I
+
+       AUTO_NORMAL                                     = 0x0D80 # 1 I
+
+       MAP1_COLOR_4                                    = 0x0D90 # 1 I
+       MAP1_INDEX                                      = 0x0D91 # 1 I
+       MAP1_NORMAL                                     = 0x0D92 # 1 I
+       MAP1_TEXTURE_COORD_1                            = 0x0D93 # 1 I
+       MAP1_TEXTURE_COORD_2                            = 0x0D94 # 1 I
+       MAP1_TEXTURE_COORD_3                            = 0x0D95 # 1 I
+       MAP1_TEXTURE_COORD_4                            = 0x0D96 # 1 I
+       MAP1_VERTEX_3                                   = 0x0D97 # 1 I
+       MAP1_VERTEX_4                                   = 0x0D98 # 1 I
+
+       MAP2_COLOR_4                                    = 0x0DB0 # 1 I
+       MAP2_INDEX                                      = 0x0DB1 # 1 I
+       MAP2_NORMAL                                     = 0x0DB2 # 1 I
+       MAP2_TEXTURE_COORD_1                            = 0x0DB3 # 1 I
+       MAP2_TEXTURE_COORD_2                            = 0x0DB4 # 1 I
+       MAP2_TEXTURE_COORD_3                            = 0x0DB5 # 1 I
+       MAP2_TEXTURE_COORD_4                            = 0x0DB6 # 1 I
+       MAP2_VERTEX_3                                   = 0x0DB7 # 1 I
+       MAP2_VERTEX_4                                   = 0x0DB8 # 1 I
+
+       MAP1_GRID_DOMAIN                                = 0x0DD0 # 2 F
+       MAP1_GRID_SEGMENTS                              = 0x0DD1 # 1 I
+       MAP2_GRID_DOMAIN                                = 0x0DD2 # 4 F
+       MAP2_GRID_SEGMENTS                              = 0x0DD3 # 2 I
+
+       TEXTURE_1D                                      = 0x0DE0 # 1 I
+       TEXTURE_2D                                      = 0x0DE1 # 1 I
+
+       FEEDBACK_BUFFER_SIZE                            = 0x0DF1 # 1 I
+       FEEDBACK_BUFFER_TYPE                            = 0x0DF2 # 1 I
+
+       SELECTION_BUFFER_SIZE                           = 0x0DF4 # 1 I
+
+       POLYGON_OFFSET_UNITS                            = 0x2A00 # 1 F
+       POLYGON_OFFSET_POINT                            = 0x2A01 # 1 I
+       POLYGON_OFFSET_LINE                             = 0x2A02 # 1 I
+       POLYGON_OFFSET_FILL                             = 0x8037 # 1 I
+       POLYGON_OFFSET_FACTOR                           = 0x8038 # 1 F
+
+       TEXTURE_BINDING_1D                              = 0x8068 # 1 I
+       TEXTURE_BINDING_2D                              = 0x8069 # 1 I
+       TEXTURE_BINDING_3D                              = 0x806A # 1 I
+
+       VERTEX_ARRAY                                    = 0x8074 # 1 I
+       NORMAL_ARRAY                                    = 0x8075 # 1 I
+       COLOR_ARRAY                                     = 0x8076 # 1 I
+       INDEX_ARRAY                                     = 0x8077 # 1 I
+       TEXTURE_COORD_ARRAY                             = 0x8078 # 1 I
+       EDGE_FLAG_ARRAY                                 = 0x8079 # 1 I
+
+       VERTEX_ARRAY_SIZE                               = 0x807A # 1 I
+       VERTEX_ARRAY_TYPE                               = 0x807B # 1 I
+       VERTEX_ARRAY_STRIDE                             = 0x807C # 1 I
+
+       NORMAL_ARRAY_TYPE                               = 0x807E # 1 I
+       NORMAL_ARRAY_STRIDE                             = 0x807F # 1 I
+
+       COLOR_ARRAY_SIZE                                = 0x8081 # 1 I
+       COLOR_ARRAY_TYPE                                = 0x8082 # 1 I
+       COLOR_ARRAY_STRIDE                              = 0x8083 # 1 I
+
+       INDEX_ARRAY_TYPE                                = 0x8085 # 1 I
+       INDEX_ARRAY_STRIDE                              = 0x8086 # 1 I
+
+       TEXTURE_COORD_ARRAY_SIZE                        = 0x8088 # 1 I
+       TEXTURE_COORD_ARRAY_TYPE                        = 0x8089 # 1 I
+       TEXTURE_COORD_ARRAY_STRIDE                      = 0x808A # 1 I
+
+       EDGE_FLAG_ARRAY_STRIDE                          = 0x808C # 1 I
+
+       use ClipPlaneName CLIP_PLANE0
+       use ClipPlaneName CLIP_PLANE1
+       use ClipPlaneName CLIP_PLANE2
+       use ClipPlaneName CLIP_PLANE3
+       use ClipPlaneName CLIP_PLANE4
+       use ClipPlaneName CLIP_PLANE5
+
+       use LightName LIGHT0
+       use LightName LIGHT1
+       use LightName LIGHT2
+       use LightName LIGHT3
+       use LightName LIGHT4
+       use LightName LIGHT5
+       use LightName LIGHT6
+       use LightName LIGHT7
+
+#      use ARB_transpose_matrix            TRANSPOSE_MODELVIEW_MATRIX_ARB
+#      use ARB_transpose_matrix            TRANSPOSE_PROJECTION_MATRIX_ARB
+#      use ARB_transpose_matrix            TRANSPOSE_TEXTURE_MATRIX_ARB
+#      use ARB_transpose_matrix            TRANSPOSE_COLOR_MATRIX_ARB
+
+       use VERSION_1_2 LIGHT_MODEL_COLOR_CONTROL
+
+       use EXT_blend_color BLEND_COLOR_EXT
+
+       use EXT_blend_minmax BLEND_EQUATION_EXT
+
+       use EXT_cmyka PACK_CMYK_HINT_EXT
+       use EXT_cmyka UNPACK_CMYK_HINT_EXT
+
+       use EXT_convolution CONVOLUTION_1D_EXT
+       use EXT_convolution CONVOLUTION_2D_EXT
+       use EXT_convolution SEPARABLE_2D_EXT
+       use EXT_convolution POST_CONVOLUTION_RED_SCALE_EXT
+       use EXT_convolution POST_CONVOLUTION_GREEN_SCALE_EXT
+       use EXT_convolution POST_CONVOLUTION_BLUE_SCALE_EXT
+       use EXT_convolution POST_CONVOLUTION_ALPHA_SCALE_EXT
+       use EXT_convolution POST_CONVOLUTION_RED_BIAS_EXT
+       use EXT_convolution POST_CONVOLUTION_GREEN_BIAS_EXT
+       use EXT_convolution POST_CONVOLUTION_BLUE_BIAS_EXT
+       use EXT_convolution POST_CONVOLUTION_ALPHA_BIAS_EXT
+
+       use EXT_histogram HISTOGRAM_EXT
+       use EXT_histogram MINMAX_EXT
+
+       use EXT_polygon_offset POLYGON_OFFSET_BIAS_EXT
+
+       use EXT_rescale_normal RESCALE_NORMAL_EXT
+
+       use EXT_shared_texture_palette SHARED_TEXTURE_PALETTE_EXT
+
+       use EXT_texture_object TEXTURE_3D_BINDING_EXT
+
+       use EXT_texture3D PACK_SKIP_IMAGES_EXT
+       use EXT_texture3D PACK_IMAGE_HEIGHT_EXT
+       use EXT_texture3D UNPACK_SKIP_IMAGES_EXT
+       use EXT_texture3D UNPACK_IMAGE_HEIGHT_EXT
+       use EXT_texture3D TEXTURE_3D_EXT
+       use EXT_texture3D MAX_3D_TEXTURE_SIZE_EXT
+
+       use EXT_vertex_array VERTEX_ARRAY_COUNT_EXT
+       use EXT_vertex_array NORMAL_ARRAY_COUNT_EXT
+       use EXT_vertex_array COLOR_ARRAY_COUNT_EXT
+       use EXT_vertex_array INDEX_ARRAY_COUNT_EXT
+       use EXT_vertex_array TEXTURE_COORD_ARRAY_COUNT_EXT
+       use EXT_vertex_array EDGE_FLAG_ARRAY_COUNT_EXT
+
+       use SGIS_detail_texture DETAIL_TEXTURE_2D_BINDING_SGIS
+
+       use SGIS_fog_function FOG_FUNC_POINTS_SGIS
+       use SGIS_fog_function MAX_FOG_FUNC_POINTS_SGIS
+
+       use SGIS_generate_mipmap GENERATE_MIPMAP_HINT_SGIS
+
+       use SGIS_multisample MULTISAMPLE_SGIS
+       use SGIS_multisample SAMPLE_ALPHA_TO_MASK_SGIS
+       use SGIS_multisample SAMPLE_ALPHA_TO_ONE_SGIS
+       use SGIS_multisample SAMPLE_MASK_SGIS
+       use SGIS_multisample SAMPLE_BUFFERS_SGIS
+       use SGIS_multisample SAMPLES_SGIS
+       use SGIS_multisample SAMPLE_MASK_VALUE_SGIS
+       use SGIS_multisample SAMPLE_MASK_INVERT_SGIS
+       use SGIS_multisample SAMPLE_PATTERN_SGIS
+
+       use SGIS_pixel_texture PIXEL_TEXTURE_SGIS
+
+       use SGIS_point_parameters POINT_SIZE_MIN_SGIS
+       use SGIS_point_parameters POINT_SIZE_MAX_SGIS
+       use SGIS_point_parameters POINT_FADE_THRESHOLD_SIZE_SGIS
+       use SGIS_point_parameters DISTANCE_ATTENUATION_SGIS
+
+       use SGIS_texture4D PACK_SKIP_VOLUMES_SGIS
+       use SGIS_texture4D PACK_IMAGE_DEPTH_SGIS
+       use SGIS_texture4D UNPACK_SKIP_VOLUMES_SGIS
+       use SGIS_texture4D UNPACK_IMAGE_DEPTH_SGIS
+       use SGIS_texture4D TEXTURE_4D_SGIS
+       use SGIS_texture4D MAX_4D_TEXTURE_SIZE_SGIS
+       use SGIS_texture4D TEXTURE_4D_BINDING_SGIS
+
+       use SGIX_async ASYNC_MARKER_SGIX
+
+       use SGIX_async_histogram ASYNC_HISTOGRAM_SGIX
+       use SGIX_async_histogram MAX_ASYNC_HISTOGRAM_SGIX
+
+       use SGIX_async_pixel ASYNC_TEX_IMAGE_SGIX
+       use SGIX_async_pixel ASYNC_DRAW_PIXELS_SGIX
+       use SGIX_async_pixel ASYNC_READ_PIXELS_SGIX
+       use SGIX_async_pixel MAX_ASYNC_TEX_IMAGE_SGIX
+       use SGIX_async_pixel MAX_ASYNC_DRAW_PIXELS_SGIX
+       use SGIX_async_pixel MAX_ASYNC_READ_PIXELS_SGIX
+
+       use SGIX_calligraphic_fragment CALLIGRAPHIC_FRAGMENT_SGIX
+
+       use SGIX_clipmap MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX
+       use SGIX_clipmap MAX_CLIPMAP_DEPTH_SGIX
+
+       use SGIX_convolution_accuracy CONVOLUTION_HINT_SGIX
+
+       use SGIX_fog_offset FOG_OFFSET_SGIX
+       use SGIX_fog_offset FOG_OFFSET_VALUE_SGIX
+
+       use SGIX_fragment_lighting FRAGMENT_LIGHTING_SGIX
+       use SGIX_fragment_lighting FRAGMENT_COLOR_MATERIAL_SGIX
+       use SGIX_fragment_lighting FRAGMENT_COLOR_MATERIAL_FACE_SGIX
+       use SGIX_fragment_lighting FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX
+       use SGIX_fragment_lighting MAX_FRAGMENT_LIGHTS_SGIX
+       use SGIX_fragment_lighting MAX_ACTIVE_LIGHTS_SGIX
+       use SGIX_fragment_lighting LIGHT_ENV_MODE_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT0_SGIX
+
+       use SGIX_framezoom FRAMEZOOM_SGIX
+       use SGIX_framezoom FRAMEZOOM_FACTOR_SGIX
+       use SGIX_framezoom MAX_FRAMEZOOM_FACTOR_SGIX
+
+       use SGIX_instruments INSTRUMENT_MEASUREMENTS_SGIX
+
+       use SGIX_interlace INTERLACE_SGIX
+
+       use SGIX_ir_instrument1 IR_INSTRUMENT1_SGIX
+
+       use SGIX_pixel_texture PIXEL_TEX_GEN_SGIX
+       use SGIX_pixel_texture PIXEL_TEX_GEN_MODE_SGIX
+
+       use SGIX_pixel_tiles PIXEL_TILE_BEST_ALIGNMENT_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_CACHE_INCREMENT_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_WIDTH_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_HEIGHT_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_GRID_WIDTH_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_GRID_HEIGHT_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_GRID_DEPTH_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_CACHE_SIZE_SGIX
+
+       use SGIX_polynomial_ffd DEFORMATIONS_MASK_SGIX
+
+       use SGIX_reference_plane REFERENCE_PLANE_EQUATION_SGIX
+       use SGIX_reference_plane REFERENCE_PLANE_SGIX
+
+       use SGIX_sprite SPRITE_SGIX
+       use SGIX_sprite SPRITE_MODE_SGIX
+       use SGIX_sprite SPRITE_AXIS_SGIX
+       use SGIX_sprite SPRITE_TRANSLATION_SGIX
+
+       use SGIX_subsample PACK_SUBSAMPLE_RATE_SGIX
+       use SGIX_subsample UNPACK_SUBSAMPLE_RATE_SGIX
+       use SGIX_resample PACK_RESAMPLE_SGIX
+       use SGIX_resample UNPACK_RESAMPLE_SGIX
+
+       use SGIX_texture_scale_bias POST_TEXTURE_FILTER_BIAS_RANGE_SGIX
+       use SGIX_texture_scale_bias POST_TEXTURE_FILTER_SCALE_RANGE_SGIX
+
+       use SGIX_vertex_preclip VERTEX_PRECLIP_SGIX
+       use SGIX_vertex_preclip VERTEX_PRECLIP_HINT_SGIX
+
+       use SGI_color_matrix COLOR_MATRIX_SGI
+       use SGI_color_matrix COLOR_MATRIX_STACK_DEPTH_SGI
+       use SGI_color_matrix MAX_COLOR_MATRIX_STACK_DEPTH_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_RED_SCALE_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_GREEN_SCALE_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_BLUE_SCALE_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_ALPHA_SCALE_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_RED_BIAS_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_GREEN_BIAS_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_BLUE_BIAS_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_ALPHA_BIAS_SGI
+
+       use SGI_color_table COLOR_TABLE_SGI
+       use SGI_color_table POST_CONVOLUTION_COLOR_TABLE_SGI
+       use SGI_color_table POST_COLOR_MATRIX_COLOR_TABLE_SGI
+
+       use SGI_texture_color_table TEXTURE_COLOR_TABLE_SGI
+
+###############################################################################
+
+GetTextureParameter enum:
+       use TextureParameterName TEXTURE_MAG_FILTER
+       use TextureParameterName TEXTURE_MIN_FILTER
+       use TextureParameterName TEXTURE_WRAP_S
+       use TextureParameterName TEXTURE_WRAP_T
+       TEXTURE_WIDTH                                   = 0x1000
+       TEXTURE_HEIGHT                                  = 0x1001
+       TEXTURE_INTERNAL_FORMAT                         = 0x1003
+       TEXTURE_COMPONENTS                              = 0x1003
+       TEXTURE_BORDER_COLOR                            = 0x1004
+       TEXTURE_BORDER                                  = 0x1005
+       TEXTURE_RED_SIZE                                = 0x805C
+       TEXTURE_GREEN_SIZE                              = 0x805D
+       TEXTURE_BLUE_SIZE                               = 0x805E
+       TEXTURE_ALPHA_SIZE                              = 0x805F
+       TEXTURE_LUMINANCE_SIZE                          = 0x8060
+       TEXTURE_INTENSITY_SIZE                          = 0x8061
+       TEXTURE_PRIORITY                                = 0x8066
+       TEXTURE_RESIDENT                                = 0x8067
+       use EXT_texture3D TEXTURE_DEPTH_EXT
+       use EXT_texture3D TEXTURE_WRAP_R_EXT
+       use SGIS_detail_texture DETAIL_TEXTURE_LEVEL_SGIS
+       use SGIS_detail_texture DETAIL_TEXTURE_MODE_SGIS
+       use SGIS_detail_texture DETAIL_TEXTURE_FUNC_POINTS_SGIS
+       use SGIS_generate_mipmap GENERATE_MIPMAP_SGIS
+       use SGIS_sharpen_texture SHARPEN_TEXTURE_FUNC_POINTS_SGIS
+       use SGIS_texture_filter4 TEXTURE_FILTER4_SIZE_SGIS
+       use SGIS_texture_lod TEXTURE_MIN_LOD_SGIS
+       use SGIS_texture_lod TEXTURE_MAX_LOD_SGIS
+       use SGIS_texture_lod TEXTURE_BASE_LEVEL_SGIS
+       use SGIS_texture_lod TEXTURE_MAX_LEVEL_SGIS
+       use SGIS_texture_select DUAL_TEXTURE_SELECT_SGIS
+       use SGIS_texture_select QUAD_TEXTURE_SELECT_SGIS
+       use SGIS_texture4D TEXTURE_4DSIZE_SGIS
+       use SGIS_texture4D TEXTURE_WRAP_Q_SGIS
+       use SGIX_clipmap TEXTURE_CLIPMAP_CENTER_SGIX
+       use SGIX_clipmap TEXTURE_CLIPMAP_FRAME_SGIX
+       use SGIX_clipmap TEXTURE_CLIPMAP_OFFSET_SGIX
+       use SGIX_clipmap TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX
+       use SGIX_clipmap TEXTURE_CLIPMAP_LOD_OFFSET_SGIX
+       use SGIX_clipmap TEXTURE_CLIPMAP_DEPTH_SGIX
+       use SGIX_shadow TEXTURE_COMPARE_SGIX
+       use SGIX_shadow TEXTURE_COMPARE_OPERATOR_SGIX
+       use SGIX_shadow TEXTURE_LEQUAL_R_SGIX
+       use SGIX_shadow TEXTURE_GEQUAL_R_SGIX
+       use SGIX_shadow_ambient SHADOW_AMBIENT_SGIX
+       use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_S_SGIX
+       use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_T_SGIX
+       use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_R_SGIX
+       use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_S_SGIX
+       use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_T_SGIX
+       use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_R_SGIX
+       use SGIX_texture_scale_bias POST_TEXTURE_FILTER_BIAS_SGIX
+       use SGIX_texture_scale_bias POST_TEXTURE_FILTER_SCALE_SGIX
+
+###############################################################################
+
+HintMode enum:
+       DONT_CARE                                       = 0x1100
+       FASTEST                                         = 0x1101
+       NICEST                                          = 0x1102
+
+###############################################################################
+
+HintTarget enum:
+       use GetPName PERSPECTIVE_CORRECTION_HINT
+       use GetPName POINT_SMOOTH_HINT
+       use GetPName LINE_SMOOTH_HINT
+       use GetPName POLYGON_SMOOTH_HINT
+       use GetPName FOG_HINT
+       use EXT_cmyka PACK_CMYK_HINT_EXT
+       use EXT_cmyka UNPACK_CMYK_HINT_EXT
+       use SGIS_generate_mipmap GENERATE_MIPMAP_HINT_SGIS
+       use SGIX_convolution_accuracy CONVOLUTION_HINT_SGIX
+       use SGIX_texture_multi_buffer TEXTURE_MULTI_BUFFER_HINT_SGIX
+       use SGIX_vertex_preclip VERTEX_PRECLIP_HINT_SGIX
+
+###############################################################################
+
+HistogramTargetEXT enum:
+       use EXT_histogram HISTOGRAM_EXT
+       use EXT_histogram PROXY_HISTOGRAM_EXT
+
+###############################################################################
+
+IndexPointerType enum:
+       use DataType SHORT
+       use DataType INT
+       use DataType FLOAT
+       use DataType DOUBLE
+
+###############################################################################
+
+LightEnvModeSGIX enum:
+       use StencilOp REPLACE
+       use TextureEnvMode MODULATE
+       use AccumOp ADD
+
+###############################################################################
+
+LightEnvParameterSGIX enum:
+       use SGIX_fragment_lighting LIGHT_ENV_MODE_SGIX
+
+###############################################################################
+
+LightModelColorControl enum:
+       use VERSION_1_2 SINGLE_COLOR
+       use VERSION_1_2 SEPARATE_SPECULAR_COLOR
+
+###############################################################################
+
+LightModelParameter enum:
+       use GetPName LIGHT_MODEL_AMBIENT
+       use GetPName LIGHT_MODEL_LOCAL_VIEWER
+       use GetPName LIGHT_MODEL_TWO_SIDE
+       use VERSION_1_2 LIGHT_MODEL_COLOR_CONTROL
+
+###############################################################################
+
+LightParameter enum:
+       AMBIENT                                         = 0x1200
+       DIFFUSE                                         = 0x1201
+       SPECULAR                                        = 0x1202
+       POSITION                                        = 0x1203
+       SPOT_DIRECTION                                  = 0x1204
+       SPOT_EXPONENT                                   = 0x1205
+       SPOT_CUTOFF                                     = 0x1206
+       CONSTANT_ATTENUATION                            = 0x1207
+       LINEAR_ATTENUATION                              = 0x1208
+       QUADRATIC_ATTENUATION                           = 0x1209
+
+###############################################################################
+
+ListMode enum:
+       COMPILE                                         = 0x1300
+       COMPILE_AND_EXECUTE                             = 0x1301
+
+###############################################################################
+
+DataType enum:
+       BYTE                                            = 0x1400
+       UNSIGNED_BYTE                                   = 0x1401
+       SHORT                                           = 0x1402
+       UNSIGNED_SHORT                                  = 0x1403
+       INT                                             = 0x1404
+       UNSIGNED_INT                                    = 0x1405
+       FLOAT                                           = 0x1406
+       2_BYTES                                         = 0x1407
+       3_BYTES                                         = 0x1408
+       4_BYTES                                         = 0x1409
+       DOUBLE                                          = 0x140A
+       DOUBLE_EXT                                      = 0x140A
+
+# OES_byte_coordinates: (OpenGL ES only)
+#      use DataType BYTE
+
+OES_element_index_uint enum: (OpenGL ES only)
+#      use DataType UNSIGNED_INT
+
+OES_texture_float enum: (OpenGL ES only; additional; see below)
+#      use DataType FLOAT
+
+VERSION_3_0 enum:
+#      use ARB_half_float_vertex           HALF_FLOAT
+
+ARB_half_float_vertex enum: (note: no ARB suffixes)
+       HALF_FLOAT                                      = 0x140B    # VERSION_3_0 / ARB_half_float_vertex
+
+ARB_half_float_pixel enum:
+       HALF_FLOAT_ARB                                  = 0x140B
+
+NV_half_float enum:
+       HALF_FLOAT_NV                                   = 0x140B
+
+APPLE_float_pixels enum: (additional; see below)
+       HALF_APPLE                                      = 0x140B
+
+OES_fixed_point enum: (OpenGL ES only)
+       FIXED_OES                                       = 0x140C
+
+# Leave a gap to preserve even/odd int/uint token values
+# ARB_future_use: 0x140D
+
+# Future NV extension (Khronos bug 5172)
+       INT64_NV                                        = 0x140E
+       UNSIGNED_INT64_NV                               = 0x140F
+
+###############################################################################
+
+ListNameType enum:
+       use DataType BYTE
+       use DataType UNSIGNED_BYTE
+       use DataType SHORT
+       use DataType UNSIGNED_SHORT
+       use DataType INT
+       use DataType UNSIGNED_INT
+       use DataType FLOAT
+       use DataType 2_BYTES
+       use DataType 3_BYTES
+       use DataType 4_BYTES
+
+###############################################################################
+
+ListParameterName enum:
+       use SGIX_list_priority LIST_PRIORITY_SGIX
+
+###############################################################################
+
+LogicOp enum:
+       CLEAR                                           = 0x1500
+       AND                                             = 0x1501
+       AND_REVERSE                                     = 0x1502
+       COPY                                            = 0x1503
+       AND_INVERTED                                    = 0x1504
+       NOOP                                            = 0x1505
+       XOR                                             = 0x1506
+       OR                                              = 0x1507
+       NOR                                             = 0x1508
+       EQUIV                                           = 0x1509
+       INVERT                                          = 0x150A
+       OR_REVERSE                                      = 0x150B
+       COPY_INVERTED                                   = 0x150C
+       OR_INVERTED                                     = 0x150D
+       NAND                                            = 0x150E
+       SET                                             = 0x150F
+
+###############################################################################
+
+MapTarget enum:
+       use GetPName MAP1_COLOR_4
+       use GetPName MAP1_INDEX
+       use GetPName MAP1_NORMAL
+       use GetPName MAP1_TEXTURE_COORD_1
+       use GetPName MAP1_TEXTURE_COORD_2
+       use GetPName MAP1_TEXTURE_COORD_3
+       use GetPName MAP1_TEXTURE_COORD_4
+       use GetPName MAP1_VERTEX_3
+       use GetPName MAP1_VERTEX_4
+       use GetPName MAP2_COLOR_4
+       use GetPName MAP2_INDEX
+       use GetPName MAP2_NORMAL
+       use GetPName MAP2_TEXTURE_COORD_1
+       use GetPName MAP2_TEXTURE_COORD_2
+       use GetPName MAP2_TEXTURE_COORD_3
+       use GetPName MAP2_TEXTURE_COORD_4
+       use GetPName MAP2_VERTEX_3
+       use GetPName MAP2_VERTEX_4
+       use SGIX_polynomial_ffd GEOMETRY_DEFORMATION_SGIX
+       use SGIX_polynomial_ffd TEXTURE_DEFORMATION_SGIX
+
+###############################################################################
+
+MaterialFace enum:
+       use DrawBufferMode FRONT
+       use DrawBufferMode BACK
+       use DrawBufferMode FRONT_AND_BACK
+
+
+###############################################################################
+
+MaterialParameter enum:
+       EMISSION                                        = 0x1600
+       SHININESS                                       = 0x1601
+       AMBIENT_AND_DIFFUSE                             = 0x1602
+       COLOR_INDEXES                                   = 0x1603
+       use LightParameter AMBIENT
+       use LightParameter DIFFUSE
+       use LightParameter SPECULAR
+
+###############################################################################
+
+MatrixMode enum:
+       MODELVIEW                                       = 0x1700
+       PROJECTION                                      = 0x1701
+       TEXTURE                                         = 0x1702
+
+###############################################################################
+
+MeshMode1 enum:
+       use PolygonMode POINT
+       use PolygonMode LINE
+
+###############################################################################
+
+MeshMode2 enum:
+       use PolygonMode POINT
+       use PolygonMode LINE
+       use PolygonMode FILL
+
+###############################################################################
+
+MinmaxTargetEXT enum:
+       use EXT_histogram MINMAX_EXT
+
+###############################################################################
+
+NormalPointerType enum:
+       use DataType BYTE
+       use DataType SHORT
+       use DataType INT
+       use DataType FLOAT
+       use DataType DOUBLE
+
+###############################################################################
+
+PixelCopyType enum:
+       COLOR                                           = 0x1800
+       DEPTH                                           = 0x1801
+       STENCIL                                         = 0x1802
+
+EXT_discard_framebuffer enum: (OpenGL ES only)
+       COLOR_EXT                                       = 0x1800
+       DEPTH_EXT                                       = 0x1801
+       STENCIL_EXT                                     = 0x1802
+
+###############################################################################
+
+PixelFormat enum:
+       COLOR_INDEX                                     = 0x1900
+       STENCIL_INDEX                                   = 0x1901
+       DEPTH_COMPONENT                                 = 0x1902
+       RED                                             = 0x1903
+       GREEN                                           = 0x1904
+       BLUE                                            = 0x1905
+       ALPHA                                           = 0x1906
+       RGB                                             = 0x1907
+       RGBA                                            = 0x1908
+       LUMINANCE                                       = 0x1909
+       LUMINANCE_ALPHA                                 = 0x190A
+       use EXT_abgr ABGR_EXT
+       use EXT_cmyka CMYK_EXT
+       use EXT_cmyka CMYKA_EXT
+       use SGIX_icc_texture R5_G6_B5_ICC_SGIX
+       use SGIX_icc_texture R5_G6_B5_A8_ICC_SGIX
+       use SGIX_icc_texture ALPHA16_ICC_SGIX
+       use SGIX_icc_texture LUMINANCE16_ICC_SGIX
+       use SGIX_icc_texture LUMINANCE16_ALPHA8_ICC_SGIX
+       use SGIX_ycrcb YCRCB_422_SGIX
+       use SGIX_ycrcb YCRCB_444_SGIX
+
+OES_depth_texture enum: (OpenGL ES only)
+#      use DataType UNSIGNED_SHORT
+#      use DataType UNSIGNED_INT
+#      use PixelFormat DEPTH_COMPONENT
+
+###############################################################################
+
+PixelMap enum:
+       use GetPixelMap PIXEL_MAP_I_TO_I
+       use GetPixelMap PIXEL_MAP_S_TO_S
+       use GetPixelMap PIXEL_MAP_I_TO_R
+       use GetPixelMap PIXEL_MAP_I_TO_G
+       use GetPixelMap PIXEL_MAP_I_TO_B
+       use GetPixelMap PIXEL_MAP_I_TO_A
+       use GetPixelMap PIXEL_MAP_R_TO_R
+       use GetPixelMap PIXEL_MAP_G_TO_G
+       use GetPixelMap PIXEL_MAP_B_TO_B
+       use GetPixelMap PIXEL_MAP_A_TO_A
+
+###############################################################################
+
+PixelStoreParameter enum:
+       use GetPName UNPACK_SWAP_BYTES
+       use GetPName UNPACK_LSB_FIRST
+       use GetPName UNPACK_ROW_LENGTH
+       use GetPName UNPACK_SKIP_ROWS
+       use GetPName UNPACK_SKIP_PIXELS
+       use GetPName UNPACK_ALIGNMENT
+       use GetPName PACK_SWAP_BYTES
+       use GetPName PACK_LSB_FIRST
+       use GetPName PACK_ROW_LENGTH
+       use GetPName PACK_SKIP_ROWS
+       use GetPName PACK_SKIP_PIXELS
+       use GetPName PACK_ALIGNMENT
+       use EXT_texture3D PACK_SKIP_IMAGES_EXT
+       use EXT_texture3D PACK_IMAGE_HEIGHT_EXT
+       use EXT_texture3D UNPACK_SKIP_IMAGES_EXT
+       use EXT_texture3D UNPACK_IMAGE_HEIGHT_EXT
+       use SGIS_texture4D PACK_SKIP_VOLUMES_SGIS
+       use SGIS_texture4D PACK_IMAGE_DEPTH_SGIS
+       use SGIS_texture4D UNPACK_SKIP_VOLUMES_SGIS
+       use SGIS_texture4D UNPACK_IMAGE_DEPTH_SGIS
+       use SGIX_pixel_tiles PIXEL_TILE_WIDTH_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_HEIGHT_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_GRID_WIDTH_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_GRID_HEIGHT_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_GRID_DEPTH_SGIX
+       use SGIX_pixel_tiles PIXEL_TILE_CACHE_SIZE_SGIX
+       use SGIX_subsample PACK_SUBSAMPLE_RATE_SGIX
+       use SGIX_subsample UNPACK_SUBSAMPLE_RATE_SGIX
+       use SGIX_resample PACK_RESAMPLE_SGIX
+       use SGIX_resample UNPACK_RESAMPLE_SGIX
+
+###############################################################################
+
+PixelStoreResampleMode enum:
+       use SGIX_resample RESAMPLE_REPLICATE_SGIX
+       use SGIX_resample RESAMPLE_ZERO_FILL_SGIX
+       use SGIX_resample RESAMPLE_DECIMATE_SGIX
+
+###############################################################################
+
+PixelStoreSubsampleRate enum:
+       use SGIX_subsample PIXEL_SUBSAMPLE_4444_SGIX
+       use SGIX_subsample PIXEL_SUBSAMPLE_2424_SGIX
+       use SGIX_subsample PIXEL_SUBSAMPLE_4242_SGIX
+
+###############################################################################
+
+PixelTexGenMode enum:
+       use DrawBufferMode NONE
+       use PixelFormat RGB
+       use PixelFormat RGBA
+       use PixelFormat LUMINANCE
+       use PixelFormat LUMINANCE_ALPHA
+       use SGIX_impact_pixel_texture PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX
+       use SGIX_impact_pixel_texture PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX
+       use SGIX_impact_pixel_texture PIXEL_TEX_GEN_ALPHA_MS_SGIX
+       use SGIX_impact_pixel_texture PIXEL_TEX_GEN_ALPHA_LS_SGIX
+
+###############################################################################
+
+PixelTexGenParameterNameSGIS enum:
+       use SGIS_pixel_texture PIXEL_FRAGMENT_RGB_SOURCE_SGIS
+       use SGIS_pixel_texture PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS
+
+###############################################################################
+
+PixelTransferParameter enum:
+       use GetPName MAP_COLOR
+       use GetPName MAP_STENCIL
+       use GetPName INDEX_SHIFT
+       use GetPName INDEX_OFFSET
+       use GetPName RED_SCALE
+       use GetPName RED_BIAS
+       use GetPName GREEN_SCALE
+       use GetPName GREEN_BIAS
+       use GetPName BLUE_SCALE
+       use GetPName BLUE_BIAS
+       use GetPName ALPHA_SCALE
+       use GetPName ALPHA_BIAS
+       use GetPName DEPTH_SCALE
+       use GetPName DEPTH_BIAS
+       use EXT_convolution POST_CONVOLUTION_RED_SCALE_EXT
+       use EXT_convolution POST_CONVOLUTION_GREEN_SCALE_EXT
+       use EXT_convolution POST_CONVOLUTION_BLUE_SCALE_EXT
+       use EXT_convolution POST_CONVOLUTION_ALPHA_SCALE_EXT
+       use EXT_convolution POST_CONVOLUTION_RED_BIAS_EXT
+       use EXT_convolution POST_CONVOLUTION_GREEN_BIAS_EXT
+       use EXT_convolution POST_CONVOLUTION_BLUE_BIAS_EXT
+       use EXT_convolution POST_CONVOLUTION_ALPHA_BIAS_EXT
+       use SGI_color_matrix POST_COLOR_MATRIX_RED_SCALE_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_GREEN_SCALE_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_BLUE_SCALE_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_ALPHA_SCALE_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_RED_BIAS_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_GREEN_BIAS_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_BLUE_BIAS_SGI
+       use SGI_color_matrix POST_COLOR_MATRIX_ALPHA_BIAS_SGI
+
+###############################################################################
+
+PixelType enum:
+       BITMAP                                          = 0x1A00
+       use DataType BYTE
+       use DataType UNSIGNED_BYTE
+       use DataType SHORT
+       use DataType UNSIGNED_SHORT
+       use DataType INT
+       use DataType UNSIGNED_INT
+       use DataType FLOAT
+       use EXT_packed_pixels UNSIGNED_BYTE_3_3_2_EXT
+       use EXT_packed_pixels UNSIGNED_SHORT_4_4_4_4_EXT
+       use EXT_packed_pixels UNSIGNED_SHORT_5_5_5_1_EXT
+       use EXT_packed_pixels UNSIGNED_INT_8_8_8_8_EXT
+       use EXT_packed_pixels UNSIGNED_INT_10_10_10_2_EXT
+
+###############################################################################
+
+PointParameterNameSGIS enum:
+       use SGIS_point_parameters POINT_SIZE_MIN_SGIS
+       use SGIS_point_parameters POINT_SIZE_MAX_SGIS
+       use SGIS_point_parameters POINT_FADE_THRESHOLD_SIZE_SGIS
+       use SGIS_point_parameters DISTANCE_ATTENUATION_SGIS
+
+###############################################################################
+
+PolygonMode enum:
+       POINT                                           = 0x1B00
+       LINE                                            = 0x1B01
+       FILL                                            = 0x1B02
+
+###############################################################################
+
+ReadBufferMode enum:
+       use DrawBufferMode FRONT_LEFT
+       use DrawBufferMode FRONT_RIGHT
+       use DrawBufferMode BACK_LEFT
+       use DrawBufferMode BACK_RIGHT
+       use DrawBufferMode FRONT
+       use DrawBufferMode BACK
+       use DrawBufferMode LEFT
+       use DrawBufferMode RIGHT
+       use DrawBufferMode AUX0
+       use DrawBufferMode AUX1
+       use DrawBufferMode AUX2
+       use DrawBufferMode AUX3
+
+###############################################################################
+
+RenderingMode enum:
+       RENDER                                          = 0x1C00
+       FEEDBACK                                        = 0x1C01
+       SELECT                                          = 0x1C02
+
+###############################################################################
+
+SamplePatternSGIS enum:
+       use SGIS_multisample 1PASS_SGIS
+       use SGIS_multisample 2PASS_0_SGIS
+       use SGIS_multisample 2PASS_1_SGIS
+       use SGIS_multisample 4PASS_0_SGIS
+       use SGIS_multisample 4PASS_1_SGIS
+       use SGIS_multisample 4PASS_2_SGIS
+       use SGIS_multisample 4PASS_3_SGIS
+
+###############################################################################
+
+SeparableTargetEXT enum:
+       use EXT_convolution SEPARABLE_2D_EXT
+
+###############################################################################
+
+ShadingModel enum:
+       FLAT                                            = 0x1D00
+       SMOOTH                                          = 0x1D01
+
+###############################################################################
+
+StencilFunction enum:
+       use AlphaFunction NEVER
+       use AlphaFunction LESS
+       use AlphaFunction EQUAL
+       use AlphaFunction LEQUAL
+       use AlphaFunction GREATER
+       use AlphaFunction NOTEQUAL
+       use AlphaFunction GEQUAL
+       use AlphaFunction ALWAYS
+
+###############################################################################
+
+StencilOp enum:
+       use BlendingFactorDest ZERO
+       KEEP                                            = 0x1E00
+       REPLACE                                         = 0x1E01
+       INCR                                            = 0x1E02
+       DECR                                            = 0x1E03
+       use LogicOp INVERT
+
+###############################################################################
+
+StringName enum:
+       VENDOR                                          = 0x1F00
+       RENDERER                                        = 0x1F01
+       VERSION                                         = 0x1F02
+       EXTENSIONS                                      = 0x1F03
+
+###############################################################################
+
+TexCoordPointerType enum:
+       use DataType SHORT
+       use DataType INT
+       use DataType FLOAT
+       use DataType DOUBLE
+
+###############################################################################
+
+TextureCoordName enum:
+       S                                               = 0x2000
+       T                                               = 0x2001
+       R                                               = 0x2002
+       Q                                               = 0x2003
+
+###############################################################################
+
+TextureEnvMode enum:
+       MODULATE                                        = 0x2100
+       DECAL                                           = 0x2101
+       use GetPName BLEND
+       use EXT_texture REPLACE_EXT
+       use AccumOp ADD
+       use SGIX_texture_add_env TEXTURE_ENV_BIAS_SGIX
+
+###############################################################################
+
+TextureEnvParameter enum:
+       TEXTURE_ENV_MODE                                = 0x2200
+       TEXTURE_ENV_COLOR                               = 0x2201
+
+###############################################################################
+
+TextureEnvTarget enum:
+       TEXTURE_ENV                                     = 0x2300
+
+###############################################################################
+
+TextureFilterFuncSGIS enum:
+       use SGIS_texture_filter4 FILTER4_SGIS
+
+###############################################################################
+
+TextureGenMode enum:
+       EYE_LINEAR                                      = 0x2400
+       OBJECT_LINEAR                                   = 0x2401
+       SPHERE_MAP                                      = 0x2402
+       use SGIS_point_line_texgen EYE_DISTANCE_TO_POINT_SGIS
+       use SGIS_point_line_texgen OBJECT_DISTANCE_TO_POINT_SGIS
+       use SGIS_point_line_texgen EYE_DISTANCE_TO_LINE_SGIS
+       use SGIS_point_line_texgen OBJECT_DISTANCE_TO_LINE_SGIS
+
+###############################################################################
+
+TextureGenParameter enum:
+       TEXTURE_GEN_MODE                                = 0x2500
+       OBJECT_PLANE                                    = 0x2501
+       EYE_PLANE                                       = 0x2502
+       use SGIS_point_line_texgen EYE_POINT_SGIS
+       use SGIS_point_line_texgen OBJECT_POINT_SGIS
+       use SGIS_point_line_texgen EYE_LINE_SGIS
+       use SGIS_point_line_texgen OBJECT_LINE_SGIS
+
+# Aliases TextureGenParameter enum above
+OES_texture_cube_map enum: (OpenGL ES only; additional; see below)
+       TEXTURE_GEN_MODE                                = 0x2500
+
+###############################################################################
+
+TextureMagFilter enum:
+       NEAREST                                         = 0x2600
+       LINEAR                                          = 0x2601
+       use SGIS_detail_texture LINEAR_DETAIL_SGIS
+       use SGIS_detail_texture LINEAR_DETAIL_ALPHA_SGIS
+       use SGIS_detail_texture LINEAR_DETAIL_COLOR_SGIS
+       use SGIS_sharpen_texture LINEAR_SHARPEN_SGIS
+       use SGIS_sharpen_texture LINEAR_SHARPEN_ALPHA_SGIS
+       use SGIS_sharpen_texture LINEAR_SHARPEN_COLOR_SGIS
+       use SGIS_texture_filter4 FILTER4_SGIS
+       use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_CEILING_SGIX
+       use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_ROUND_SGIX
+       use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_FLOOR_SGIX
+
+###############################################################################
+
+TextureMinFilter enum:
+       use TextureMagFilter NEAREST
+       use TextureMagFilter LINEAR
+       NEAREST_MIPMAP_NEAREST                          = 0x2700
+       LINEAR_MIPMAP_NEAREST                           = 0x2701
+       NEAREST_MIPMAP_LINEAR                           = 0x2702
+       LINEAR_MIPMAP_LINEAR                            = 0x2703
+       use SGIS_texture_filter4 FILTER4_SGIS
+       use SGIX_clipmap LINEAR_CLIPMAP_LINEAR_SGIX
+       use SGIX_clipmap NEAREST_CLIPMAP_NEAREST_SGIX
+       use SGIX_clipmap NEAREST_CLIPMAP_LINEAR_SGIX
+       use SGIX_clipmap LINEAR_CLIPMAP_NEAREST_SGIX
+       use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_CEILING_SGIX
+       use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_ROUND_SGIX
+       use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_FLOOR_SGIX
+
+###############################################################################
+
+TextureParameterName enum:
+       TEXTURE_MAG_FILTER                              = 0x2800
+       TEXTURE_MIN_FILTER                              = 0x2801
+       TEXTURE_WRAP_S                                  = 0x2802
+       TEXTURE_WRAP_T                                  = 0x2803
+       use GetTextureParameter TEXTURE_BORDER_COLOR
+       use GetTextureParameter TEXTURE_PRIORITY
+       use EXT_texture3D TEXTURE_WRAP_R_EXT
+       use SGIS_detail_texture DETAIL_TEXTURE_LEVEL_SGIS
+       use SGIS_detail_texture DETAIL_TEXTURE_MODE_SGIS
+       use SGIS_generate_mipmap GENERATE_MIPMAP_SGIS
+       use SGIS_texture_select DUAL_TEXTURE_SELECT_SGIS
+       use SGIS_texture_select QUAD_TEXTURE_SELECT_SGIS
+       use SGIS_texture4D TEXTURE_WRAP_Q_SGIS
+       use SGIX_clipmap TEXTURE_CLIPMAP_CENTER_SGIX
+       use SGIX_clipmap TEXTURE_CLIPMAP_FRAME_SGIX
+       use SGIX_clipmap TEXTURE_CLIPMAP_OFFSET_SGIX
+       use SGIX_clipmap TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX
+       use SGIX_clipmap TEXTURE_CLIPMAP_LOD_OFFSET_SGIX
+       use SGIX_clipmap TEXTURE_CLIPMAP_DEPTH_SGIX
+       use SGIX_shadow TEXTURE_COMPARE_SGIX
+       use SGIX_shadow TEXTURE_COMPARE_OPERATOR_SGIX
+       use SGIX_shadow_ambient SHADOW_AMBIENT_SGIX
+       use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_S_SGIX
+       use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_T_SGIX
+       use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_R_SGIX
+       use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_S_SGIX
+       use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_T_SGIX
+       use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_R_SGIX
+       use SGIX_texture_scale_bias POST_TEXTURE_FILTER_BIAS_SGIX
+       use SGIX_texture_scale_bias POST_TEXTURE_FILTER_SCALE_SGIX
+
+###############################################################################
+
+TextureTarget enum:
+       use GetPName TEXTURE_1D
+       use GetPName TEXTURE_2D
+       PROXY_TEXTURE_1D                                = 0x8063
+       PROXY_TEXTURE_2D                                = 0x8064
+       use EXT_texture3D TEXTURE_3D_EXT
+       use EXT_texture3D PROXY_TEXTURE_3D_EXT
+       use SGIS_detail_texture DETAIL_TEXTURE_2D_SGIS
+       use SGIS_texture4D TEXTURE_4D_SGIS
+       use SGIS_texture4D PROXY_TEXTURE_4D_SGIS
+       use SGIS_texture_lod TEXTURE_MIN_LOD_SGIS
+       use SGIS_texture_lod TEXTURE_MAX_LOD_SGIS
+       use SGIS_texture_lod TEXTURE_BASE_LEVEL_SGIS
+       use SGIS_texture_lod TEXTURE_MAX_LEVEL_SGIS
+
+###############################################################################
+
+TextureWrapMode enum:
+       CLAMP                                           = 0x2900
+       REPEAT                                          = 0x2901
+       use SGIS_texture_border_clamp CLAMP_TO_BORDER_SGIS
+       use SGIS_texture_edge_clamp CLAMP_TO_EDGE_SGIS
+
+###############################################################################
+
+PixelInternalFormat enum:
+       R3_G3_B2                                        = 0x2A10
+       ALPHA4                                          = 0x803B
+       ALPHA8                                          = 0x803C
+       ALPHA12                                         = 0x803D
+       ALPHA16                                         = 0x803E
+       LUMINANCE4                                      = 0x803F
+       LUMINANCE8                                      = 0x8040
+       LUMINANCE12                                     = 0x8041
+       LUMINANCE16                                     = 0x8042
+       LUMINANCE4_ALPHA4                               = 0x8043
+       LUMINANCE6_ALPHA2                               = 0x8044
+       LUMINANCE8_ALPHA8                               = 0x8045
+       LUMINANCE12_ALPHA4                              = 0x8046
+       LUMINANCE12_ALPHA12                             = 0x8047
+       LUMINANCE16_ALPHA16                             = 0x8048
+       INTENSITY                                       = 0x8049
+       INTENSITY4                                      = 0x804A
+       INTENSITY8                                      = 0x804B
+       INTENSITY12                                     = 0x804C
+       INTENSITY16                                     = 0x804D
+       RGB4                                            = 0x804F
+       RGB5                                            = 0x8050
+       RGB8                                            = 0x8051
+       RGB10                                           = 0x8052
+       RGB12                                           = 0x8053
+       RGB16                                           = 0x8054
+       RGBA2                                           = 0x8055
+       RGBA4                                           = 0x8056
+       RGB5_A1                                         = 0x8057
+       RGBA8                                           = 0x8058
+       RGB10_A2                                        = 0x8059
+       RGBA12                                          = 0x805A
+       RGBA16                                          = 0x805B
+       use EXT_texture RGB2_EXT
+       use SGIS_texture_select DUAL_ALPHA4_SGIS
+       use SGIS_texture_select DUAL_ALPHA8_SGIS
+       use SGIS_texture_select DUAL_ALPHA12_SGIS
+       use SGIS_texture_select DUAL_ALPHA16_SGIS
+       use SGIS_texture_select DUAL_LUMINANCE4_SGIS
+       use SGIS_texture_select DUAL_LUMINANCE8_SGIS
+       use SGIS_texture_select DUAL_LUMINANCE12_SGIS
+       use SGIS_texture_select DUAL_LUMINANCE16_SGIS
+       use SGIS_texture_select DUAL_INTENSITY4_SGIS
+       use SGIS_texture_select DUAL_INTENSITY8_SGIS
+       use SGIS_texture_select DUAL_INTENSITY12_SGIS
+       use SGIS_texture_select DUAL_INTENSITY16_SGIS
+       use SGIS_texture_select DUAL_LUMINANCE_ALPHA4_SGIS
+       use SGIS_texture_select DUAL_LUMINANCE_ALPHA8_SGIS
+       use SGIS_texture_select QUAD_ALPHA4_SGIS
+       use SGIS_texture_select QUAD_ALPHA8_SGIS
+       use SGIS_texture_select QUAD_LUMINANCE4_SGIS
+       use SGIS_texture_select QUAD_LUMINANCE8_SGIS
+       use SGIS_texture_select QUAD_INTENSITY4_SGIS
+       use SGIS_texture_select QUAD_INTENSITY8_SGIS
+       use SGIX_depth_texture DEPTH_COMPONENT16_SGIX
+       use SGIX_depth_texture DEPTH_COMPONENT24_SGIX
+       use SGIX_depth_texture DEPTH_COMPONENT32_SGIX
+       use SGIX_icc_texture RGB_ICC_SGIX
+       use SGIX_icc_texture RGBA_ICC_SGIX
+       use SGIX_icc_texture ALPHA_ICC_SGIX
+       use SGIX_icc_texture LUMINANCE_ICC_SGIX
+       use SGIX_icc_texture INTENSITY_ICC_SGIX
+       use SGIX_icc_texture LUMINANCE_ALPHA_ICC_SGIX
+       use SGIX_icc_texture R5_G6_B5_ICC_SGIX
+       use SGIX_icc_texture R5_G6_B5_A8_ICC_SGIX
+       use SGIX_icc_texture ALPHA16_ICC_SGIX
+       use SGIX_icc_texture LUMINANCE16_ICC_SGIX
+       use SGIX_icc_texture INTENSITY16_ICC_SGIX
+       use SGIX_icc_texture LUMINANCE16_ALPHA8_ICC_SGIX
+
+# Aliases PixelInternalFormat enums above
+OES_rgb8_rgba8 enum: (OpenGL ES only)
+       RGB8                                            = 0x8051
+       RGBA8                                           = 0x8058
+
+###############################################################################
+
+InterleavedArrayFormat enum:
+       V2F                                             = 0x2A20
+       V3F                                             = 0x2A21
+       C4UB_V2F                                        = 0x2A22
+       C4UB_V3F                                        = 0x2A23
+       C3F_V3F                                         = 0x2A24
+       N3F_V3F                                         = 0x2A25
+       C4F_N3F_V3F                                     = 0x2A26
+       T2F_V3F                                         = 0x2A27
+       T4F_V4F                                         = 0x2A28
+       T2F_C4UB_V3F                                    = 0x2A29
+       T2F_C3F_V3F                                     = 0x2A2A
+       T2F_N3F_V3F                                     = 0x2A2B
+       T2F_C4F_N3F_V3F                                 = 0x2A2C
+       T4F_C4F_N3F_V4F                                 = 0x2A2D
+
+###############################################################################
+
+VertexPointerType enum:
+       use DataType SHORT
+       use DataType INT
+       use DataType FLOAT
+       use DataType DOUBLE
+
+###############################################################################
+
+# 0x3000 through 0x3FFF are reserved for clip planes
+ClipPlaneName enum:
+       CLIP_PLANE0                                     = 0x3000 # 1 I
+       CLIP_PLANE1                                     = 0x3001 # 1 I
+       CLIP_PLANE2                                     = 0x3002 # 1 I
+       CLIP_PLANE3                                     = 0x3003 # 1 I
+       CLIP_PLANE4                                     = 0x3004 # 1 I
+       CLIP_PLANE5                                     = 0x3005 # 1 I
+
+VERSION_3_0 enum: (aliases)
+       CLIP_DISTANCE0                                  = 0x3000    # VERSION_3_0   # alias GL_CLIP_PLANE0
+       CLIP_DISTANCE1                                  = 0x3001    # VERSION_3_0   # alias GL_CLIP_PLANE1
+       CLIP_DISTANCE2                                  = 0x3002    # VERSION_3_0   # alias GL_CLIP_PLANE2
+       CLIP_DISTANCE3                                  = 0x3003    # VERSION_3_0   # alias GL_CLIP_PLANE3
+       CLIP_DISTANCE4                                  = 0x3004    # VERSION_3_0   # alias GL_CLIP_PLANE4
+       CLIP_DISTANCE5                                  = 0x3005    # VERSION_3_0   # alias GL_CLIP_PLANE5
+       CLIP_DISTANCE6                                  = 0x3006    # VERSION_3_0   # alias GL_CLIP_PLANE5
+       CLIP_DISTANCE7                                  = 0x3007    # VERSION_3_0   # alias GL_CLIP_PLANE5
+
+###############################################################################
+
+# 0x4000-0x4FFF are reserved for light numbers
+LightName enum:
+       LIGHT0                                          = 0x4000 # 1 I
+       LIGHT1                                          = 0x4001 # 1 I
+       LIGHT2                                          = 0x4002 # 1 I
+       LIGHT3                                          = 0x4003 # 1 I
+       LIGHT4                                          = 0x4004 # 1 I
+       LIGHT5                                          = 0x4005 # 1 I
+       LIGHT6                                          = 0x4006 # 1 I
+       LIGHT7                                          = 0x4007 # 1 I
+       use SGIX_fragment_lighting FRAGMENT_LIGHT0_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT1_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT2_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT3_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT4_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT5_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT6_SGIX
+       use SGIX_fragment_lighting FRAGMENT_LIGHT7_SGIX
+
+###############################################################################
+
+EXT_abgr enum:
+       ABGR_EXT                                        = 0x8000
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       CONSTANT_COLOR                                  = 0x8001
+       ONE_MINUS_CONSTANT_COLOR                        = 0x8002
+       CONSTANT_ALPHA                                  = 0x8003
+       ONE_MINUS_CONSTANT_ALPHA                        = 0x8004
+       BLEND_COLOR                                     = 0x8005 # 4 F
+
+EXT_blend_color enum:
+       CONSTANT_COLOR_EXT                              = 0x8001
+       ONE_MINUS_CONSTANT_COLOR_EXT                    = 0x8002
+       CONSTANT_ALPHA_EXT                              = 0x8003
+       ONE_MINUS_CONSTANT_ALPHA_EXT                    = 0x8004
+       BLEND_COLOR_EXT                                 = 0x8005 # 4 F
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+EXT_blend_minmax enum:
+       FUNC_ADD                                        = 0x8006
+       FUNC_ADD_EXT                                    = 0x8006
+       MIN                                             = 0x8007
+       MIN_EXT                                         = 0x8007
+       MAX                                             = 0x8008
+       MAX_EXT                                         = 0x8008
+       BLEND_EQUATION                                  = 0x8009 # 1 I
+       BLEND_EQUATION_EXT                              = 0x8009 # 1 I
+
+VERSION_2_0 enum: (Promoted for OpenGL 2.0)
+       BLEND_EQUATION_RGB                              = 0x8009    # VERSION_2_0   # alias GL_BLEND_EQUATION
+
+EXT_blend_equation_separate enum: (separate; see below)
+       BLEND_EQUATION_RGB_EXT                          = 0x8009    # alias GL_BLEND_EQUATION
+
+# Aliases EXT_blend_equation_separate enum above
+OES_blend_equation_separate enum: (OpenGL ES only; additional; see below)
+       BLEND_EQUATION_RGB_OES                          = 0x8009 # 1 I
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+EXT_blend_subtract enum:
+       FUNC_SUBTRACT                                   = 0x800A
+       FUNC_SUBTRACT_EXT                               = 0x800A
+       FUNC_REVERSE_SUBTRACT                           = 0x800B
+       FUNC_REVERSE_SUBTRACT_EXT                       = 0x800B
+
+# Aliases EXT_blend_minmax and EXT_blend_subtract enums above
+OES_blend_subtract enum: (OpenGL ES only)
+       FUNC_ADD_OES                                    = 0x8006
+       BLEND_EQUATION_OES                              = 0x8009 # 1 I
+       FUNC_SUBTRACT_OES                               = 0x800A
+       FUNC_REVERSE_SUBTRACT_OES                       = 0x800B
+
+###############################################################################
+
+EXT_cmyka enum:
+       CMYK_EXT                                        = 0x800C
+       CMYKA_EXT                                       = 0x800D
+       PACK_CMYK_HINT_EXT                              = 0x800E # 1 I
+       UNPACK_CMYK_HINT_EXT                            = 0x800F # 1 I
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       CONVOLUTION_1D                                  = 0x8010 # 1 I
+       CONVOLUTION_2D                                  = 0x8011 # 1 I
+       SEPARABLE_2D                                    = 0x8012 # 1 I
+       CONVOLUTION_BORDER_MODE                         = 0x8013
+       CONVOLUTION_FILTER_SCALE                        = 0x8014
+       CONVOLUTION_FILTER_BIAS                         = 0x8015
+       REDUCE                                          = 0x8016
+       CONVOLUTION_FORMAT                              = 0x8017
+       CONVOLUTION_WIDTH                               = 0x8018
+       CONVOLUTION_HEIGHT                              = 0x8019
+       MAX_CONVOLUTION_WIDTH                           = 0x801A
+       MAX_CONVOLUTION_HEIGHT                          = 0x801B
+       POST_CONVOLUTION_RED_SCALE                      = 0x801C # 1 F
+       POST_CONVOLUTION_GREEN_SCALE                    = 0x801D # 1 F
+       POST_CONVOLUTION_BLUE_SCALE                     = 0x801E # 1 F
+       POST_CONVOLUTION_ALPHA_SCALE                    = 0x801F # 1 F
+       POST_CONVOLUTION_RED_BIAS                       = 0x8020 # 1 F
+       POST_CONVOLUTION_GREEN_BIAS                     = 0x8021 # 1 F
+       POST_CONVOLUTION_BLUE_BIAS                      = 0x8022 # 1 F
+       POST_CONVOLUTION_ALPHA_BIAS                     = 0x8023 # 1 F
+
+EXT_convolution enum:
+       CONVOLUTION_1D_EXT                              = 0x8010 # 1 I
+       CONVOLUTION_2D_EXT                              = 0x8011 # 1 I
+       SEPARABLE_2D_EXT                                = 0x8012 # 1 I
+       CONVOLUTION_BORDER_MODE_EXT                     = 0x8013
+       CONVOLUTION_FILTER_SCALE_EXT                    = 0x8014
+       CONVOLUTION_FILTER_BIAS_EXT                     = 0x8015
+       REDUCE_EXT                                      = 0x8016
+       CONVOLUTION_FORMAT_EXT                          = 0x8017
+       CONVOLUTION_WIDTH_EXT                           = 0x8018
+       CONVOLUTION_HEIGHT_EXT                          = 0x8019
+       MAX_CONVOLUTION_WIDTH_EXT                       = 0x801A
+       MAX_CONVOLUTION_HEIGHT_EXT                      = 0x801B
+       POST_CONVOLUTION_RED_SCALE_EXT                  = 0x801C # 1 F
+       POST_CONVOLUTION_GREEN_SCALE_EXT                = 0x801D # 1 F
+       POST_CONVOLUTION_BLUE_SCALE_EXT                 = 0x801E # 1 F
+       POST_CONVOLUTION_ALPHA_SCALE_EXT                = 0x801F # 1 F
+       POST_CONVOLUTION_RED_BIAS_EXT                   = 0x8020 # 1 F
+       POST_CONVOLUTION_GREEN_BIAS_EXT                 = 0x8021 # 1 F
+       POST_CONVOLUTION_BLUE_BIAS_EXT                  = 0x8022 # 1 F
+       POST_CONVOLUTION_ALPHA_BIAS_EXT                 = 0x8023 # 1 F
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       HISTOGRAM                                       = 0x8024 # 1 I
+       PROXY_HISTOGRAM                                 = 0x8025
+       HISTOGRAM_WIDTH                                 = 0x8026
+       HISTOGRAM_FORMAT                                = 0x8027
+       HISTOGRAM_RED_SIZE                              = 0x8028
+       HISTOGRAM_GREEN_SIZE                            = 0x8029
+       HISTOGRAM_BLUE_SIZE                             = 0x802A
+       HISTOGRAM_ALPHA_SIZE                            = 0x802B
+       HISTOGRAM_SINK                                  = 0x802D
+       MINMAX                                          = 0x802E # 1 I
+       MINMAX_FORMAT                                   = 0x802F
+       MINMAX_SINK                                     = 0x8030
+       TABLE_TOO_LARGE                                 = 0x8031
+
+EXT_histogram enum:
+       HISTOGRAM_EXT                                   = 0x8024 # 1 I
+       PROXY_HISTOGRAM_EXT                             = 0x8025
+       HISTOGRAM_WIDTH_EXT                             = 0x8026
+       HISTOGRAM_FORMAT_EXT                            = 0x8027
+       HISTOGRAM_RED_SIZE_EXT                          = 0x8028
+       HISTOGRAM_GREEN_SIZE_EXT                        = 0x8029
+       HISTOGRAM_BLUE_SIZE_EXT                         = 0x802A
+       HISTOGRAM_ALPHA_SIZE_EXT                        = 0x802B
+       HISTOGRAM_LUMINANCE_SIZE                        = 0x802C
+       HISTOGRAM_LUMINANCE_SIZE_EXT                    = 0x802C
+       HISTOGRAM_SINK_EXT                              = 0x802D
+       MINMAX_EXT                                      = 0x802E # 1 I
+       MINMAX_FORMAT_EXT                               = 0x802F
+       MINMAX_SINK_EXT                                 = 0x8030
+       TABLE_TOO_LARGE_EXT                             = 0x8031
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       UNSIGNED_BYTE_3_3_2                             = 0x8032
+       UNSIGNED_SHORT_4_4_4_4                          = 0x8033
+       UNSIGNED_SHORT_5_5_5_1                          = 0x8034
+       UNSIGNED_INT_8_8_8_8                            = 0x8035
+       UNSIGNED_INT_10_10_10_2                         = 0x8036
+       UNSIGNED_BYTE_2_3_3_REV                         = 0x8362
+       UNSIGNED_SHORT_5_6_5                            = 0x8363
+       UNSIGNED_SHORT_5_6_5_REV                        = 0x8364
+       UNSIGNED_SHORT_4_4_4_4_REV                      = 0x8365
+       UNSIGNED_SHORT_1_5_5_5_REV                      = 0x8366
+       UNSIGNED_INT_8_8_8_8_REV                        = 0x8367
+       UNSIGNED_INT_2_10_10_10_REV                     = 0x8368
+
+EXT_packed_pixels enum:
+       UNSIGNED_BYTE_3_3_2_EXT                         = 0x8032
+       UNSIGNED_SHORT_4_4_4_4_EXT                      = 0x8033
+       UNSIGNED_SHORT_5_5_5_1_EXT                      = 0x8034
+       UNSIGNED_INT_8_8_8_8_EXT                        = 0x8035
+       UNSIGNED_INT_10_10_10_2_EXT                     = 0x8036
+       UNSIGNED_BYTE_2_3_3_REV_EXT                     = 0x8362
+       UNSIGNED_SHORT_5_6_5_EXT                        = 0x8363
+       UNSIGNED_SHORT_5_6_5_REV_EXT                    = 0x8364
+       UNSIGNED_SHORT_4_4_4_4_REV_EXT                  = 0x8365
+       UNSIGNED_SHORT_1_5_5_5_REV_EXT                  = 0x8366
+       UNSIGNED_INT_8_8_8_8_REV_EXT                    = 0x8367
+       UNSIGNED_INT_2_10_10_10_REV_EXT                 = 0x8368
+
+EXT_texture_type_2_10_10_10_REV enum: (OpenGL ES only)
+#      use EXT_packed_pixels UNSIGNED_INT_2_10_10_10_REV_EXT
+
+###############################################################################
+
+EXT_polygon_offset enum:
+       POLYGON_OFFSET_EXT                              = 0x8037
+       POLYGON_OFFSET_FACTOR_EXT                       = 0x8038
+       POLYGON_OFFSET_BIAS_EXT                         = 0x8039 # 1 F
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       RESCALE_NORMAL                                  = 0x803A # 1 I
+
+EXT_rescale_normal enum:
+       RESCALE_NORMAL_EXT                              = 0x803A # 1 I
+
+###############################################################################
+
+EXT_texture enum:
+       ALPHA4_EXT                                      = 0x803B
+       ALPHA8_EXT                                      = 0x803C
+       ALPHA12_EXT                                     = 0x803D
+       ALPHA16_EXT                                     = 0x803E
+       LUMINANCE4_EXT                                  = 0x803F
+       LUMINANCE8_EXT                                  = 0x8040
+       LUMINANCE12_EXT                                 = 0x8041
+       LUMINANCE16_EXT                                 = 0x8042
+       LUMINANCE4_ALPHA4_EXT                           = 0x8043
+       LUMINANCE6_ALPHA2_EXT                           = 0x8044
+       LUMINANCE8_ALPHA8_EXT                           = 0x8045
+       LUMINANCE12_ALPHA4_EXT                          = 0x8046
+       LUMINANCE12_ALPHA12_EXT                         = 0x8047
+       LUMINANCE16_ALPHA16_EXT                         = 0x8048
+       INTENSITY_EXT                                   = 0x8049
+       INTENSITY4_EXT                                  = 0x804A
+       INTENSITY8_EXT                                  = 0x804B
+       INTENSITY12_EXT                                 = 0x804C
+       INTENSITY16_EXT                                 = 0x804D
+       RGB2_EXT                                        = 0x804E
+       RGB4_EXT                                        = 0x804F
+       RGB5_EXT                                        = 0x8050
+       RGB8_EXT                                        = 0x8051
+       RGB10_EXT                                       = 0x8052
+       RGB12_EXT                                       = 0x8053
+       RGB16_EXT                                       = 0x8054
+       RGBA2_EXT                                       = 0x8055
+       RGBA4_EXT                                       = 0x8056
+       RGB5_A1_EXT                                     = 0x8057
+       RGBA8_EXT                                       = 0x8058
+       RGB10_A2_EXT                                    = 0x8059
+       RGBA12_EXT                                      = 0x805A
+       RGBA16_EXT                                      = 0x805B
+       TEXTURE_RED_SIZE_EXT                            = 0x805C
+       TEXTURE_GREEN_SIZE_EXT                          = 0x805D
+       TEXTURE_BLUE_SIZE_EXT                           = 0x805E
+       TEXTURE_ALPHA_SIZE_EXT                          = 0x805F
+       TEXTURE_LUMINANCE_SIZE_EXT                      = 0x8060
+       TEXTURE_INTENSITY_SIZE_EXT                      = 0x8061
+       REPLACE_EXT                                     = 0x8062
+       PROXY_TEXTURE_1D_EXT                            = 0x8063
+       PROXY_TEXTURE_2D_EXT                            = 0x8064
+       TEXTURE_TOO_LARGE_EXT                           = 0x8065
+
+# Aliases EXT_texture enums above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+       RGBA4_OES                                       = 0x8056
+       RGB5_A1_OES                                     = 0x8057
+
+###############################################################################
+
+EXT_texture_object enum:
+       TEXTURE_PRIORITY_EXT                            = 0x8066
+       TEXTURE_RESIDENT_EXT                            = 0x8067
+       TEXTURE_1D_BINDING_EXT                          = 0x8068
+       TEXTURE_2D_BINDING_EXT                          = 0x8069
+       TEXTURE_3D_BINDING_EXT                          = 0x806A # 1 I
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       PACK_SKIP_IMAGES                                = 0x806B # 1 I
+       PACK_IMAGE_HEIGHT                               = 0x806C # 1 F
+       UNPACK_SKIP_IMAGES                              = 0x806D # 1 I
+       UNPACK_IMAGE_HEIGHT                             = 0x806E # 1 F
+       TEXTURE_3D                                      = 0x806F # 1 I
+       PROXY_TEXTURE_3D                                = 0x8070
+       TEXTURE_DEPTH                                   = 0x8071
+       TEXTURE_WRAP_R                                  = 0x8072
+       MAX_3D_TEXTURE_SIZE                             = 0x8073 # 1 I
+
+EXT_texture3D enum:
+       PACK_SKIP_IMAGES_EXT                            = 0x806B # 1 I
+       PACK_IMAGE_HEIGHT_EXT                           = 0x806C # 1 F
+       UNPACK_SKIP_IMAGES_EXT                          = 0x806D # 1 I
+       UNPACK_IMAGE_HEIGHT_EXT                         = 0x806E # 1 F
+       TEXTURE_3D_EXT                                  = 0x806F # 1 I
+       PROXY_TEXTURE_3D_EXT                            = 0x8070
+       TEXTURE_DEPTH_EXT                               = 0x8071
+       TEXTURE_WRAP_R_EXT                              = 0x8072
+       MAX_3D_TEXTURE_SIZE_EXT                         = 0x8073 # 1 I
+
+# Aliases EXT_texture_object, EXT_texture3D enums above
+OES_texture3D enum: (OpenGL ES only)
+       TEXTURE_3D_BINDING_OES                          = 0x806A # 1 I
+       TEXTURE_3D_OES                                  = 0x806F # 1 I
+       TEXTURE_WRAP_R_OES                              = 0x8072
+       MAX_3D_TEXTURE_SIZE_OES                         = 0x8073 # 1 I
+
+###############################################################################
+
+EXT_vertex_array enum:
+       VERTEX_ARRAY_EXT                                = 0x8074
+       NORMAL_ARRAY_EXT                                = 0x8075
+       COLOR_ARRAY_EXT                                 = 0x8076
+       INDEX_ARRAY_EXT                                 = 0x8077
+       TEXTURE_COORD_ARRAY_EXT                         = 0x8078
+       EDGE_FLAG_ARRAY_EXT                             = 0x8079
+       VERTEX_ARRAY_SIZE_EXT                           = 0x807A
+       VERTEX_ARRAY_TYPE_EXT                           = 0x807B
+       VERTEX_ARRAY_STRIDE_EXT                         = 0x807C
+       VERTEX_ARRAY_COUNT_EXT                          = 0x807D # 1 I
+       NORMAL_ARRAY_TYPE_EXT                           = 0x807E
+       NORMAL_ARRAY_STRIDE_EXT                         = 0x807F
+       NORMAL_ARRAY_COUNT_EXT                          = 0x8080 # 1 I
+       COLOR_ARRAY_SIZE_EXT                            = 0x8081
+       COLOR_ARRAY_TYPE_EXT                            = 0x8082
+       COLOR_ARRAY_STRIDE_EXT                          = 0x8083
+       COLOR_ARRAY_COUNT_EXT                           = 0x8084 # 1 I
+       INDEX_ARRAY_TYPE_EXT                            = 0x8085
+       INDEX_ARRAY_STRIDE_EXT                          = 0x8086
+       INDEX_ARRAY_COUNT_EXT                           = 0x8087 # 1 I
+       TEXTURE_COORD_ARRAY_SIZE_EXT                    = 0x8088
+       TEXTURE_COORD_ARRAY_TYPE_EXT                    = 0x8089
+       TEXTURE_COORD_ARRAY_STRIDE_EXT                  = 0x808A
+       TEXTURE_COORD_ARRAY_COUNT_EXT                   = 0x808B # 1 I
+       EDGE_FLAG_ARRAY_STRIDE_EXT                      = 0x808C
+       EDGE_FLAG_ARRAY_COUNT_EXT                       = 0x808D # 1 I
+       VERTEX_ARRAY_POINTER_EXT                        = 0x808E
+       NORMAL_ARRAY_POINTER_EXT                        = 0x808F
+       COLOR_ARRAY_POINTER_EXT                         = 0x8090
+       INDEX_ARRAY_POINTER_EXT                         = 0x8091
+       TEXTURE_COORD_ARRAY_POINTER_EXT                 = 0x8092
+       EDGE_FLAG_ARRAY_POINTER_EXT                     = 0x8093
+
+###############################################################################
+
+SGIX_interlace enum:
+       INTERLACE_SGIX                                  = 0x8094 # 1 I
+
+###############################################################################
+
+SGIS_detail_texture enum:
+       DETAIL_TEXTURE_2D_SGIS                          = 0x8095
+       DETAIL_TEXTURE_2D_BINDING_SGIS                  = 0x8096 # 1 I
+       LINEAR_DETAIL_SGIS                              = 0x8097
+       LINEAR_DETAIL_ALPHA_SGIS                        = 0x8098
+       LINEAR_DETAIL_COLOR_SGIS                        = 0x8099
+       DETAIL_TEXTURE_LEVEL_SGIS                       = 0x809A
+       DETAIL_TEXTURE_MODE_SGIS                        = 0x809B
+       DETAIL_TEXTURE_FUNC_POINTS_SGIS                 = 0x809C
+
+###############################################################################
+
+# Reuses some SGIS_multisample values
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+       MULTISAMPLE                                     = 0x809D
+       SAMPLE_ALPHA_TO_COVERAGE                        = 0x809E
+       SAMPLE_ALPHA_TO_ONE                             = 0x809F
+       SAMPLE_COVERAGE                                 = 0x80A0
+       SAMPLE_BUFFERS                                  = 0x80A8 # 1 I
+       SAMPLES                                         = 0x80A9 # 1 I
+       SAMPLE_COVERAGE_VALUE                           = 0x80AA # 1 F
+       SAMPLE_COVERAGE_INVERT                          = 0x80AB # 1 I
+
+ARB_multisample enum:
+       MULTISAMPLE_ARB                                 = 0x809D
+       SAMPLE_ALPHA_TO_COVERAGE_ARB                    = 0x809E
+       SAMPLE_ALPHA_TO_ONE_ARB                         = 0x809F
+       SAMPLE_COVERAGE_ARB                             = 0x80A0
+       SAMPLE_BUFFERS_ARB                              = 0x80A8 # 1 I
+       SAMPLES_ARB                                     = 0x80A9 # 1 I
+       SAMPLE_COVERAGE_VALUE_ARB                       = 0x80AA # 1 F
+       SAMPLE_COVERAGE_INVERT_ARB                      = 0x80AB # 1 I
+
+SGIS_multisample enum:
+       MULTISAMPLE_SGIS                                = 0x809D # 1 I
+       SAMPLE_ALPHA_TO_MASK_SGIS                       = 0x809E # 1 I
+       SAMPLE_ALPHA_TO_ONE_SGIS                        = 0x809F # 1 I
+       SAMPLE_MASK_SGIS                                = 0x80A0 # 1 I
+       1PASS_SGIS                                      = 0x80A1
+       2PASS_0_SGIS                                    = 0x80A2
+       2PASS_1_SGIS                                    = 0x80A3
+       4PASS_0_SGIS                                    = 0x80A4
+       4PASS_1_SGIS                                    = 0x80A5
+       4PASS_2_SGIS                                    = 0x80A6
+       4PASS_3_SGIS                                    = 0x80A7
+       SAMPLE_BUFFERS_SGIS                             = 0x80A8 # 1 I
+       SAMPLES_SGIS                                    = 0x80A9 # 1 I
+       SAMPLE_MASK_VALUE_SGIS                          = 0x80AA # 1 F
+       SAMPLE_MASK_INVERT_SGIS                         = 0x80AB # 1 I
+       SAMPLE_PATTERN_SGIS                             = 0x80AC # 1 I
+
+# Reuses SGIS_multisample values.
+EXT_multisample enum:
+       MULTISAMPLE_EXT                                 = 0x809D
+       SAMPLE_ALPHA_TO_MASK_EXT                        = 0x809E
+       SAMPLE_ALPHA_TO_ONE_EXT                         = 0x809F
+       SAMPLE_MASK_EXT                                 = 0x80A0
+       1PASS_EXT                                       = 0x80A1
+       2PASS_0_EXT                                     = 0x80A2
+       2PASS_1_EXT                                     = 0x80A3
+       4PASS_0_EXT                                     = 0x80A4
+       4PASS_1_EXT                                     = 0x80A5
+       4PASS_2_EXT                                     = 0x80A6
+       4PASS_3_EXT                                     = 0x80A7
+       SAMPLE_BUFFERS_EXT                              = 0x80A8 # 1 I
+       SAMPLES_EXT                                     = 0x80A9 # 1 I
+       SAMPLE_MASK_VALUE_EXT                           = 0x80AA # 1 F
+       SAMPLE_MASK_INVERT_EXT                          = 0x80AB # 1 I
+       SAMPLE_PATTERN_EXT                              = 0x80AC # 1 I
+       MULTISAMPLE_BIT_EXT                             = 0x20000000
+
+###############################################################################
+
+SGIS_sharpen_texture enum:
+       LINEAR_SHARPEN_SGIS                             = 0x80AD
+       LINEAR_SHARPEN_ALPHA_SGIS                       = 0x80AE
+       LINEAR_SHARPEN_COLOR_SGIS                       = 0x80AF
+       SHARPEN_TEXTURE_FUNC_POINTS_SGIS                = 0x80B0
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       COLOR_MATRIX                                    = 0x80B1 # 16 F
+       COLOR_MATRIX_STACK_DEPTH                        = 0x80B2 # 1 I
+       MAX_COLOR_MATRIX_STACK_DEPTH                    = 0x80B3 # 1 I
+       POST_COLOR_MATRIX_RED_SCALE                     = 0x80B4 # 1 F
+       POST_COLOR_MATRIX_GREEN_SCALE                   = 0x80B5 # 1 F
+       POST_COLOR_MATRIX_BLUE_SCALE                    = 0x80B6 # 1 F
+       POST_COLOR_MATRIX_ALPHA_SCALE                   = 0x80B7 # 1 F
+       POST_COLOR_MATRIX_RED_BIAS                      = 0x80B8 # 1 F
+       POST_COLOR_MATRIX_GREEN_BIAS                    = 0x80B9 # 1 F
+       POST_COLOR_MATRIX_BLUE_BIAS                     = 0x80BA # 1 F
+       POST_COLOR_MATRIX_ALPHA_BIAS                    = 0x80BB # 1 F
+
+SGI_color_matrix enum:
+       COLOR_MATRIX_SGI                                = 0x80B1 # 16 F
+       COLOR_MATRIX_STACK_DEPTH_SGI                    = 0x80B2 # 1 I
+       MAX_COLOR_MATRIX_STACK_DEPTH_SGI                = 0x80B3 # 1 I
+       POST_COLOR_MATRIX_RED_SCALE_SGI                 = 0x80B4 # 1 F
+       POST_COLOR_MATRIX_GREEN_SCALE_SGI               = 0x80B5 # 1 F
+       POST_COLOR_MATRIX_BLUE_SCALE_SGI                = 0x80B6 # 1 F
+       POST_COLOR_MATRIX_ALPHA_SCALE_SGI               = 0x80B7 # 1 F
+       POST_COLOR_MATRIX_RED_BIAS_SGI                  = 0x80B8 # 1 F
+       POST_COLOR_MATRIX_GREEN_BIAS_SGI                = 0x80B9 # 1 F
+       POST_COLOR_MATRIX_BLUE_BIAS_SGI                 = 0x80BA # 1 F
+       POST_COLOR_MATRIX_ALPHA_BIAS_SGI                = 0x80BB # 1 F
+
+###############################################################################
+
+SGI_texture_color_table enum:
+       TEXTURE_COLOR_TABLE_SGI                         = 0x80BC # 1 I
+       PROXY_TEXTURE_COLOR_TABLE_SGI                   = 0x80BD
+
+###############################################################################
+
+SGIX_texture_add_env enum:
+       TEXTURE_ENV_BIAS_SGIX                           = 0x80BE
+
+###############################################################################
+
+SGIX_shadow_ambient enum:
+       SHADOW_AMBIENT_SGIX                             = 0x80BF
+
+###############################################################################
+
+# Intergraph/Intense3D/3Dlabs: 0x80C0-0x80CF
+
+# 3Dlabs_future_use: 0x80C0-0x80C7
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       BLEND_DST_RGB                                   = 0x80C8
+       BLEND_SRC_RGB                                   = 0x80C9
+       BLEND_DST_ALPHA                                 = 0x80CA
+       BLEND_SRC_ALPHA                                 = 0x80CB
+
+EXT_blend_func_separate enum:
+       BLEND_DST_RGB_EXT                               = 0x80C8
+       BLEND_SRC_RGB_EXT                               = 0x80C9
+       BLEND_DST_ALPHA_EXT                             = 0x80CA
+       BLEND_SRC_ALPHA_EXT                             = 0x80CB
+
+# Aliases EXT_blend_func_separate enums above
+OES_blend_func_separate enum: (OpenGL ES only)
+       BLEND_DST_RGB_OES                               = 0x80C8
+       BLEND_SRC_RGB_OES                               = 0x80C9
+       BLEND_DST_ALPHA_OES                             = 0x80CA
+       BLEND_SRC_ALPHA_OES                             = 0x80CB
+
+EXT_422_pixels enum:
+       422_EXT                                         = 0x80CC
+       422_REV_EXT                                     = 0x80CD
+       422_AVERAGE_EXT                                 = 0x80CE
+       422_REV_AVERAGE_EXT                             = 0x80CF
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       COLOR_TABLE                                     = 0x80D0 # 1 I
+       POST_CONVOLUTION_COLOR_TABLE                    = 0x80D1 # 1 I
+       POST_COLOR_MATRIX_COLOR_TABLE                   = 0x80D2 # 1 I
+       PROXY_COLOR_TABLE                               = 0x80D3
+       PROXY_POST_CONVOLUTION_COLOR_TABLE              = 0x80D4
+       PROXY_POST_COLOR_MATRIX_COLOR_TABLE             = 0x80D5
+       COLOR_TABLE_SCALE                               = 0x80D6
+       COLOR_TABLE_BIAS                                = 0x80D7
+       COLOR_TABLE_FORMAT                              = 0x80D8
+       COLOR_TABLE_WIDTH                               = 0x80D9
+       COLOR_TABLE_RED_SIZE                            = 0x80DA
+       COLOR_TABLE_GREEN_SIZE                          = 0x80DB
+       COLOR_TABLE_BLUE_SIZE                           = 0x80DC
+       COLOR_TABLE_ALPHA_SIZE                          = 0x80DD
+       COLOR_TABLE_LUMINANCE_SIZE                      = 0x80DE
+       COLOR_TABLE_INTENSITY_SIZE                      = 0x80DF
+
+SGI_color_table enum:
+       COLOR_TABLE_SGI                                 = 0x80D0 # 1 I
+       POST_CONVOLUTION_COLOR_TABLE_SGI                = 0x80D1 # 1 I
+       POST_COLOR_MATRIX_COLOR_TABLE_SGI               = 0x80D2 # 1 I
+       PROXY_COLOR_TABLE_SGI                           = 0x80D3
+       PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI          = 0x80D4
+       PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI         = 0x80D5
+       COLOR_TABLE_SCALE_SGI                           = 0x80D6
+       COLOR_TABLE_BIAS_SGI                            = 0x80D7
+       COLOR_TABLE_FORMAT_SGI                          = 0x80D8
+       COLOR_TABLE_WIDTH_SGI                           = 0x80D9
+       COLOR_TABLE_RED_SIZE_SGI                        = 0x80DA
+       COLOR_TABLE_GREEN_SIZE_SGI                      = 0x80DB
+       COLOR_TABLE_BLUE_SIZE_SGI                       = 0x80DC
+       COLOR_TABLE_ALPHA_SIZE_SGI                      = 0x80DD
+       COLOR_TABLE_LUMINANCE_SIZE_SGI                  = 0x80DE
+       COLOR_TABLE_INTENSITY_SIZE_SGI                  = 0x80DF
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       BGR                                             = 0x80E0
+       BGRA                                            = 0x80E1
+
+ARB_vertex_array_bgra enum:
+#      use VERSION_1_2                     BGRA
+
+EXT_bgra enum:
+       BGR_EXT                                         = 0x80E0
+       BGRA_EXT                                        = 0x80E1
+
+###############################################################################
+
+# Microsoft: 0x80E2-0x80E7
+
+###############################################################################
+
+VERSION_1_2 enum:
+       MAX_ELEMENTS_VERTICES                           = 0x80E8
+       MAX_ELEMENTS_INDICES                            = 0x80E9
+
+###############################################################################
+
+# Microsoft: 0x80EA-0x810F
+
+###############################################################################
+
+SGIS_texture_select enum:
+       DUAL_ALPHA4_SGIS                                = 0x8110
+       DUAL_ALPHA8_SGIS                                = 0x8111
+       DUAL_ALPHA12_SGIS                               = 0x8112
+       DUAL_ALPHA16_SGIS                               = 0x8113
+       DUAL_LUMINANCE4_SGIS                            = 0x8114
+       DUAL_LUMINANCE8_SGIS                            = 0x8115
+       DUAL_LUMINANCE12_SGIS                           = 0x8116
+       DUAL_LUMINANCE16_SGIS                           = 0x8117
+       DUAL_INTENSITY4_SGIS                            = 0x8118
+       DUAL_INTENSITY8_SGIS                            = 0x8119
+       DUAL_INTENSITY12_SGIS                           = 0x811A
+       DUAL_INTENSITY16_SGIS                           = 0x811B
+       DUAL_LUMINANCE_ALPHA4_SGIS                      = 0x811C
+       DUAL_LUMINANCE_ALPHA8_SGIS                      = 0x811D
+       QUAD_ALPHA4_SGIS                                = 0x811E
+       QUAD_ALPHA8_SGIS                                = 0x811F
+       QUAD_LUMINANCE4_SGIS                            = 0x8120
+       QUAD_LUMINANCE8_SGIS                            = 0x8121
+       QUAD_INTENSITY4_SGIS                            = 0x8122
+       QUAD_INTENSITY8_SGIS                            = 0x8123
+       DUAL_TEXTURE_SELECT_SGIS                        = 0x8124
+       QUAD_TEXTURE_SELECT_SGIS                        = 0x8125
+
+###############################################################################
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       POINT_SIZE_MIN                                  = 0x8126 # 1 F
+       POINT_SIZE_MAX                                  = 0x8127 # 1 F
+       POINT_FADE_THRESHOLD_SIZE                       = 0x8128 # 1 F
+       POINT_DISTANCE_ATTENUATION                      = 0x8129 # 3 F
+
+ARB_point_parameters enum:
+       POINT_SIZE_MIN_ARB                              = 0x8126 # 1 F
+       POINT_SIZE_MAX_ARB                              = 0x8127 # 1 F
+       POINT_FADE_THRESHOLD_SIZE_ARB                   = 0x8128 # 1 F
+       POINT_DISTANCE_ATTENUATION_ARB                  = 0x8129 # 3 F
+
+EXT_point_parameters enum:
+       POINT_SIZE_MIN_EXT                              = 0x8126 # 1 F
+       POINT_SIZE_MAX_EXT                              = 0x8127 # 1 F
+       POINT_FADE_THRESHOLD_SIZE_EXT                   = 0x8128 # 1 F
+       DISTANCE_ATTENUATION_EXT                        = 0x8129 # 3 F
+
+SGIS_point_parameters enum:
+       POINT_SIZE_MIN_SGIS                             = 0x8126 # 1 F
+       POINT_SIZE_MAX_SGIS                             = 0x8127 # 1 F
+       POINT_FADE_THRESHOLD_SIZE_SGIS                  = 0x8128 # 1 F
+       DISTANCE_ATTENUATION_SGIS                       = 0x8129 # 3 F
+
+###############################################################################
+
+SGIS_fog_function enum:
+       FOG_FUNC_SGIS                                   = 0x812A
+       FOG_FUNC_POINTS_SGIS                            = 0x812B # 1 I
+       MAX_FOG_FUNC_POINTS_SGIS                        = 0x812C # 1 I
+
+###############################################################################
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+       CLAMP_TO_BORDER                                 = 0x812D
+
+ARB_texture_border_clamp enum:
+       CLAMP_TO_BORDER_ARB                             = 0x812D
+
+SGIS_texture_border_clamp enum:
+       CLAMP_TO_BORDER_SGIS                            = 0x812D
+
+###############################################################################
+
+SGIX_texture_multi_buffer enum:
+       TEXTURE_MULTI_BUFFER_HINT_SGIX                  = 0x812E
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       CLAMP_TO_EDGE                                   = 0x812F
+
+SGIS_texture_edge_clamp enum:
+       CLAMP_TO_EDGE_SGIS                              = 0x812F
+
+###############################################################################
+
+SGIS_texture4D enum:
+       PACK_SKIP_VOLUMES_SGIS                          = 0x8130 # 1 I
+       PACK_IMAGE_DEPTH_SGIS                           = 0x8131 # 1 I
+       UNPACK_SKIP_VOLUMES_SGIS                        = 0x8132 # 1 I
+       UNPACK_IMAGE_DEPTH_SGIS                         = 0x8133 # 1 I
+       TEXTURE_4D_SGIS                                 = 0x8134 # 1 I
+       PROXY_TEXTURE_4D_SGIS                           = 0x8135
+       TEXTURE_4DSIZE_SGIS                             = 0x8136
+       TEXTURE_WRAP_Q_SGIS                             = 0x8137
+       MAX_4D_TEXTURE_SIZE_SGIS                        = 0x8138 # 1 I
+       TEXTURE_4D_BINDING_SGIS                         = 0x814F # 1 I
+
+###############################################################################
+
+SGIX_pixel_texture enum:
+       PIXEL_TEX_GEN_SGIX                              = 0x8139 # 1 I
+       PIXEL_TEX_GEN_MODE_SGIX                         = 0x832B # 1 I
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       TEXTURE_MIN_LOD                                 = 0x813A
+       TEXTURE_MAX_LOD                                 = 0x813B
+       TEXTURE_BASE_LEVEL                              = 0x813C
+       TEXTURE_MAX_LEVEL                               = 0x813D
+
+SGIS_texture_lod enum:
+       TEXTURE_MIN_LOD_SGIS                            = 0x813A
+       TEXTURE_MAX_LOD_SGIS                            = 0x813B
+       TEXTURE_BASE_LEVEL_SGIS                         = 0x813C
+       TEXTURE_MAX_LEVEL_SGIS                          = 0x813D
+
+###############################################################################
+
+SGIX_pixel_tiles enum:
+       PIXEL_TILE_BEST_ALIGNMENT_SGIX                  = 0x813E # 1 I
+       PIXEL_TILE_CACHE_INCREMENT_SGIX                 = 0x813F # 1 I
+       PIXEL_TILE_WIDTH_SGIX                           = 0x8140 # 1 I
+       PIXEL_TILE_HEIGHT_SGIX                          = 0x8141 # 1 I
+       PIXEL_TILE_GRID_WIDTH_SGIX                      = 0x8142 # 1 I
+       PIXEL_TILE_GRID_HEIGHT_SGIX                     = 0x8143 # 1 I
+       PIXEL_TILE_GRID_DEPTH_SGIX                      = 0x8144 # 1 I
+       PIXEL_TILE_CACHE_SIZE_SGIX                      = 0x8145 # 1 I
+
+###############################################################################
+
+SGIS_texture_filter4 enum:
+       FILTER4_SGIS                                    = 0x8146
+       TEXTURE_FILTER4_SIZE_SGIS                       = 0x8147
+
+###############################################################################
+
+SGIX_sprite enum:
+       SPRITE_SGIX                                     = 0x8148 # 1 I
+       SPRITE_MODE_SGIX                                = 0x8149 # 1 I
+       SPRITE_AXIS_SGIX                                = 0x814A # 3 F
+       SPRITE_TRANSLATION_SGIX                         = 0x814B # 3 F
+       SPRITE_AXIAL_SGIX                               = 0x814C
+       SPRITE_OBJECT_ALIGNED_SGIX                      = 0x814D
+       SPRITE_EYE_ALIGNED_SGIX                         = 0x814E
+
+###############################################################################
+
+# SGIS_texture4D (additional; see above): 0x814F
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       CONSTANT_BORDER                                 = 0x8151
+#      WRAP_BORDER                                     = 0x8152   # Not actually used
+       REPLICATE_BORDER                                = 0x8153
+       CONVOLUTION_BORDER_COLOR                        = 0x8154
+
+HP_convolution_border_modes enum:
+       IGNORE_BORDER_HP                                = 0x8150    # Not promoted
+       CONSTANT_BORDER_HP                              = 0x8151
+       REPLICATE_BORDER_HP                             = 0x8153
+       CONVOLUTION_BORDER_COLOR_HP                     = 0x8154
+
+###############################################################################
+
+# HP: 0x8155-0x816F
+
+###############################################################################
+
+SGIX_clipmap enum:
+       LINEAR_CLIPMAP_LINEAR_SGIX                      = 0x8170
+       TEXTURE_CLIPMAP_CENTER_SGIX                     = 0x8171
+       TEXTURE_CLIPMAP_FRAME_SGIX                      = 0x8172
+       TEXTURE_CLIPMAP_OFFSET_SGIX                     = 0x8173
+       TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX              = 0x8174
+       TEXTURE_CLIPMAP_LOD_OFFSET_SGIX                 = 0x8175
+       TEXTURE_CLIPMAP_DEPTH_SGIX                      = 0x8176
+       MAX_CLIPMAP_DEPTH_SGIX                          = 0x8177 # 1 I
+       MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX                  = 0x8178 # 1 I
+       NEAREST_CLIPMAP_NEAREST_SGIX                    = 0x844D
+       NEAREST_CLIPMAP_LINEAR_SGIX                     = 0x844E
+       LINEAR_CLIPMAP_NEAREST_SGIX                     = 0x844F
+
+###############################################################################
+
+SGIX_texture_scale_bias enum:
+       POST_TEXTURE_FILTER_BIAS_SGIX                   = 0x8179
+       POST_TEXTURE_FILTER_SCALE_SGIX                  = 0x817A
+       POST_TEXTURE_FILTER_BIAS_RANGE_SGIX             = 0x817B # 2 F
+       POST_TEXTURE_FILTER_SCALE_RANGE_SGIX            = 0x817C # 2 F
+
+###############################################################################
+
+SGIX_reference_plane enum:
+       REFERENCE_PLANE_SGIX                            = 0x817D # 1 I
+       REFERENCE_PLANE_EQUATION_SGIX                   = 0x817E # 4 F
+
+###############################################################################
+
+SGIX_ir_instrument1 enum:
+       IR_INSTRUMENT1_SGIX                             = 0x817F # 1 I
+
+###############################################################################
+
+SGIX_instruments enum:
+       INSTRUMENT_BUFFER_POINTER_SGIX                  = 0x8180
+       INSTRUMENT_MEASUREMENTS_SGIX                    = 0x8181 # 1 I
+
+###############################################################################
+
+SGIX_list_priority enum:
+       LIST_PRIORITY_SGIX                              = 0x8182
+
+###############################################################################
+
+SGIX_calligraphic_fragment enum:
+       CALLIGRAPHIC_FRAGMENT_SGIX                      = 0x8183 # 1 I
+
+###############################################################################
+
+SGIX_impact_pixel_texture enum:
+       PIXEL_TEX_GEN_Q_CEILING_SGIX                    = 0x8184
+       PIXEL_TEX_GEN_Q_ROUND_SGIX                      = 0x8185
+       PIXEL_TEX_GEN_Q_FLOOR_SGIX                      = 0x8186
+       PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX                = 0x8187
+       PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX             = 0x8188
+       PIXEL_TEX_GEN_ALPHA_LS_SGIX                     = 0x8189
+       PIXEL_TEX_GEN_ALPHA_MS_SGIX                     = 0x818A
+
+###############################################################################
+
+SGIX_framezoom enum:
+       FRAMEZOOM_SGIX                                  = 0x818B # 1 I
+       FRAMEZOOM_FACTOR_SGIX                           = 0x818C # 1 I
+       MAX_FRAMEZOOM_FACTOR_SGIX                       = 0x818D # 1 I
+
+###############################################################################
+
+SGIX_texture_lod_bias enum:
+       TEXTURE_LOD_BIAS_S_SGIX                         = 0x818E
+       TEXTURE_LOD_BIAS_T_SGIX                         = 0x818F
+       TEXTURE_LOD_BIAS_R_SGIX                         = 0x8190
+
+###############################################################################
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       GENERATE_MIPMAP                                 = 0x8191
+       GENERATE_MIPMAP_HINT                            = 0x8192 # 1 I
+
+SGIS_generate_mipmap enum:
+       GENERATE_MIPMAP_SGIS                            = 0x8191
+       GENERATE_MIPMAP_HINT_SGIS                       = 0x8192 # 1 I
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_spotlight_cutoff: 0x8193
+#      SPOT_CUTOFF_DELTA_SGIX                          = 0x8193
+
+###############################################################################
+
+SGIX_polynomial_ffd enum:
+       GEOMETRY_DEFORMATION_SGIX                       = 0x8194
+       TEXTURE_DEFORMATION_SGIX                        = 0x8195
+       DEFORMATIONS_MASK_SGIX                          = 0x8196 # 1 I
+       MAX_DEFORMATION_ORDER_SGIX                      = 0x8197
+
+###############################################################################
+
+SGIX_fog_offset enum:
+       FOG_OFFSET_SGIX                                 = 0x8198 # 1 I
+       FOG_OFFSET_VALUE_SGIX                           = 0x8199 # 4 F
+
+###############################################################################
+
+SGIX_shadow enum:
+       TEXTURE_COMPARE_SGIX                            = 0x819A
+       TEXTURE_COMPARE_OPERATOR_SGIX                   = 0x819B
+       TEXTURE_LEQUAL_R_SGIX                           = 0x819C
+       TEXTURE_GEQUAL_R_SGIX                           = 0x819D
+
+###############################################################################
+
+# SGI private extension, not in enumext.spec
+# SGIX_igloo_interface: 0x819E-0x81A4
+#      IGLOO_FULLSCREEN_SGIX                           = 0x819E
+#      IGLOO_VIEWPORT_OFFSET_SGIX                      = 0x819F
+#      IGLOO_SWAPTMESH_SGIX                            = 0x81A0
+#      IGLOO_COLORNORMAL_SGIX                          = 0x81A1
+#      IGLOO_IRISGL_MODE_SGIX                          = 0x81A2
+#      IGLOO_LMC_COLOR_SGIX                            = 0x81A3
+#      IGLOO_TMESHMODE_SGIX                            = 0x81A4
+
+###############################################################################
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       DEPTH_COMPONENT16                               = 0x81A5
+       DEPTH_COMPONENT24                               = 0x81A6
+       DEPTH_COMPONENT32                               = 0x81A7
+
+ARB_depth_texture enum:
+       DEPTH_COMPONENT16_ARB                           = 0x81A5
+       DEPTH_COMPONENT24_ARB                           = 0x81A6
+       DEPTH_COMPONENT32_ARB                           = 0x81A7
+
+SGIX_depth_texture enum:
+       DEPTH_COMPONENT16_SGIX                          = 0x81A5
+       DEPTH_COMPONENT24_SGIX                          = 0x81A6
+       DEPTH_COMPONENT32_SGIX                          = 0x81A7
+
+# Aliases ARB_depth_texture enum above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+       DEPTH_COMPONENT16_OES                           = 0x81A5
+
+# Aliases ARB_depth_texture enum above
+OES_depth24 enum: (OpenGL ES only)
+       DEPTH_COMPONENT24_OES                           = 0x81A6
+
+# Aliases ARB_depth_texture enum above
+OES_depth32 enum: (OpenGL ES only)
+       DEPTH_COMPONENT32_OES                           = 0x81A7
+
+###############################################################################
+
+EXT_compiled_vertex_array enum:
+       ARRAY_ELEMENT_LOCK_FIRST_EXT                    = 0x81A8
+       ARRAY_ELEMENT_LOCK_COUNT_EXT                    = 0x81A9
+
+###############################################################################
+
+EXT_cull_vertex enum:
+       CULL_VERTEX_EXT                                 = 0x81AA
+       CULL_VERTEX_EYE_POSITION_EXT                    = 0x81AB
+       CULL_VERTEX_OBJECT_POSITION_EXT                 = 0x81AC
+
+###############################################################################
+
+# Promoted from SGI?
+EXT_index_array_formats enum:
+       IUI_V2F_EXT                                     = 0x81AD
+       IUI_V3F_EXT                                     = 0x81AE
+       IUI_N3F_V2F_EXT                                 = 0x81AF
+       IUI_N3F_V3F_EXT                                 = 0x81B0
+       T2F_IUI_V2F_EXT                                 = 0x81B1
+       T2F_IUI_V3F_EXT                                 = 0x81B2
+       T2F_IUI_N3F_V2F_EXT                             = 0x81B3
+       T2F_IUI_N3F_V3F_EXT                             = 0x81B4
+
+###############################################################################
+
+# Promoted from SGI?
+EXT_index_func enum:
+       INDEX_TEST_EXT                                  = 0x81B5
+       INDEX_TEST_FUNC_EXT                             = 0x81B6
+       INDEX_TEST_REF_EXT                              = 0x81B7
+
+###############################################################################
+
+# Promoted from SGI?
+EXT_index_material enum:
+       INDEX_MATERIAL_EXT                              = 0x81B8
+       INDEX_MATERIAL_PARAMETER_EXT                    = 0x81B9
+       INDEX_MATERIAL_FACE_EXT                         = 0x81BA
+
+###############################################################################
+
+SGIX_ycrcb enum:
+       YCRCB_422_SGIX                                  = 0x81BB
+       YCRCB_444_SGIX                                  = 0x81BC
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGI_complex_type: 0x81BD-0x81C3
+#      COMPLEX_UNSIGNED_BYTE_SGI                       = 0x81BD
+#      COMPLEX_BYTE_SGI                                = 0x81BE
+#      COMPLEX_UNSIGNED_SHORT_SGI                      = 0x81BF
+#      COMPLEX_SHORT_SGI                               = 0x81C0
+#      COMPLEX_UNSIGNED_INT_SGI                        = 0x81C1
+#      COMPLEX_INT_SGI                                 = 0x81C2
+#      COMPLEX_FLOAT_SGI                               = 0x81C3
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGI_fft: 0x81C4-0x81CA
+#      POST_TRANSFORM_RED_SCALE_SGI                    = ????   # 1 F
+#      POST_TRANSFORM_GREEN_SCALE_SGI                  = ????   # 1 F
+#      POST_TRANSFORM_BLUE_SCALE_SGI                   = ????   # 1 F
+#      POST_TRANSFORM_ALPHA_SCALE_SGI                  = ????   # 1 F
+#      POST_TRANSFORM_RED_BIAS_SGI                     = ????   # 1 F
+#      POST_TRANSFORM_GREEN_BIAS_SGI                   = ????   # 1 F
+#      POST_TRANSFORM_BLUE_BIAS_SGI                    = ????   # 1 F
+#      POST_TRANSFORM_ALPHA_BIAS_SGI                   = ????   # 1 F
+#      PIXEL_TRANSFORM_OPERATOR_SGI                    = 0x81C4 # 1 I
+#      CONVOLUTION_SGI                                 = 0x81C5
+#      FFT_1D_SGI                                      = 0x81C6
+#      PIXEL_TRANSFORM_SGI                             = 0x81C7
+#      MAX_FFT_WIDTH_SGI                               = 0x81C8
+#      SORT_SGI                                        = 0x81C9
+#      TRANSPOSE_SGI                                   = 0x81CA
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_nurbs_eval: 0x81CB-0x81CF
+#      MAP1_VERTEX_3_NURBS_SGIX                        = 0x81CB # 1 I
+#      MAP1_VERTEX_4_NURBS_SGIX                        = 0x81CC # 1 I
+#      MAP1_INDEX_NURBS_SGIX                           = 0x81CD # 1 I
+#      MAP1_COLOR_4_NURBS_SGIX                         = 0x81CE # 1 I
+#      MAP1_NORMAL_NURBS_SGIX                          = 0x81CF # 1 I
+#      MAP1_TEXTURE_COORD_1_NURBS_SGIX                 = 0x81E0 # 1 I
+#      MAP1_TEXTURE_COORD_2_NURBS_SGIX                 = 0x81E1 # 1 I
+#      MAP1_TEXTURE_COORD_3_NURBS_SGIX                 = 0x81E2 # 1 I
+#      MAP1_TEXTURE_COORD_4_NURBS_SGIX                 = 0x81E3 # 1 I
+#      MAP2_VERTEX_3_NURBS_SGIX                        = 0x81E4 # 1 I
+#      MAP2_VERTEX_4_NURBS_SGIX                        = 0x81E5 # 1 I
+#      MAP2_INDEX_NURBS_SGIX                           = 0x81E6 # 1 I
+#      MAP2_COLOR_4_NURBS_SGIX                         = 0x81E7 # 1 I
+#      MAP2_NORMAL_NURBS_SGIX                          = 0x81E8 # 1 I
+#      MAP2_TEXTURE_COORD_1_NURBS_SGIX                 = 0x81E9 # 1 I
+#      MAP2_TEXTURE_COORD_2_NURBS_SGIX                 = 0x81EA # 1 I
+#      MAP2_TEXTURE_COORD_3_NURBS_SGIX                 = 0x81EB # 1 I
+#      MAP2_TEXTURE_COORD_4_NURBS_SGIX                 = 0x81EC # 1 I
+#      NURBS_KNOT_COUNT_SGIX                           = 0x81ED
+#      NURBS_KNOT_VECTOR_SGIX                          = 0x81EE
+
+###############################################################################
+
+# Sun: 0x81D0-0x81DF
+
+# No extension spec, not in enumext.spec
+# SUNX_surface_hint enum:
+#       SURFACE_SIZE_HINT_SUNX                         = 0x81D2
+#       LARGE_SUNX                                     = 0x81D3
+
+SUNX_general_triangle_list enum:
+        RESTART_SUN                                    = 0x0001
+        REPLACE_MIDDLE_SUN                             = 0x0002
+        REPLACE_OLDEST_SUN                             = 0x0003
+        WRAP_BORDER_SUN                                = 0x81D4
+        TRIANGLE_LIST_SUN                              = 0x81D7
+        REPLACEMENT_CODE_SUN                           = 0x81D8
+
+SUNX_constant_data enum:
+        UNPACK_CONSTANT_DATA_SUNX                      = 0x81D5
+        TEXTURE_CONSTANT_DATA_SUNX                     = 0x81D6
+
+SUN_global_alpha enum:
+        GLOBAL_ALPHA_SUN                               = 0x81D9
+        GLOBAL_ALPHA_FACTOR_SUN                        = 0x81DA
+
+###############################################################################
+
+# SGIX_nurbs_eval (additional; see above): 0x81E0-0x81EE
+
+###############################################################################
+
+SGIS_texture_color_mask enum:
+       TEXTURE_COLOR_WRITEMASK_SGIS                    = 0x81EF
+
+###############################################################################
+
+SGIS_point_line_texgen enum:
+       EYE_DISTANCE_TO_POINT_SGIS                      = 0x81F0
+       OBJECT_DISTANCE_TO_POINT_SGIS                   = 0x81F1
+       EYE_DISTANCE_TO_LINE_SGIS                       = 0x81F2
+       OBJECT_DISTANCE_TO_LINE_SGIS                    = 0x81F3
+       EYE_POINT_SGIS                                  = 0x81F4
+       OBJECT_POINT_SGIS                               = 0x81F5
+       EYE_LINE_SGIS                                   = 0x81F6
+       OBJECT_LINE_SGIS                                = 0x81F7
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+       LIGHT_MODEL_COLOR_CONTROL                       = 0x81F8 # 1 I
+       SINGLE_COLOR                                    = 0x81F9
+       SEPARATE_SPECULAR_COLOR                         = 0x81FA
+
+EXT_separate_specular_color enum:
+       LIGHT_MODEL_COLOR_CONTROL_EXT                   = 0x81F8
+       SINGLE_COLOR_EXT                                = 0x81F9
+       SEPARATE_SPECULAR_COLOR_EXT                     = 0x81FA
+
+###############################################################################
+
+EXT_shared_texture_palette enum:
+       SHARED_TEXTURE_PALETTE_EXT                      = 0x81FB # 1 I
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fog_scale: 0x81FC-0x81FD
+#      FOG_SCALE_SGIX                                  = 0x81FC # 1 I
+#      FOG_SCALE_VALUE_SGIX                            = 0x81FD # 1 F
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fog_blend: 0x81FE-0x81FF
+#      FOG_BLEND_ALPHA_SGIX                            = 0x81FE # 1 I
+#      FOG_BLEND_COLOR_SGIX                            = 0x81FF # 1 I
+
+###############################################################################
+
+# ATI: 0x8200-0x820F (released by Microsoft 2002/9/16)
+ATI_text_fragment_shader enum:
+       TEXT_FRAGMENT_SHADER_ATI                        = 0x8200
+
+###############################################################################
+
+# OpenGL ARB: 0x8210-0x823F
+
+VERSION_3_0 enum:
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_RED_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_DEFAULT
+       use ARB_framebuffer_object          FRAMEBUFFER_UNDEFINED
+       use ARB_framebuffer_object          DEPTH_STENCIL_ATTACHMENT
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+       FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING           = 0x8210    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE           = 0x8211    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_RED_SIZE                 = 0x8212    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_GREEN_SIZE               = 0x8213    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_BLUE_SIZE                = 0x8214    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE               = 0x8215    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE               = 0x8216    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE             = 0x8217    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_DEFAULT                             = 0x8218    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_UNDEFINED                           = 0x8219    # VERSION_3_0 / ARB_fbo
+       DEPTH_STENCIL_ATTACHMENT                        = 0x821A    # VERSION_3_0 / ARB_fbo
+
+VERSION_3_0 enum:
+       MAJOR_VERSION                                   = 0x821B    # VERSION_3_0
+       MINOR_VERSION                                   = 0x821C    # VERSION_3_0
+       NUM_EXTENSIONS                                  = 0x821D    # VERSION_3_0
+       CONTEXT_FLAGS                                   = 0x821E    # VERSION_3_0
+
+# ARB_future_use: 0x821F-0x8221
+
+VERSION_3_0 enum:
+       use ARB_framebuffer_object          INDEX
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+       INDEX                                           = 0x8222    # VERSION_3_0 / ARB_fbo
+
+VERSION_3_0 enum:
+       DEPTH_BUFFER                                    = 0x8223    # VERSION_3_0
+       STENCIL_BUFFER                                  = 0x8224    # VERSION_3_0
+       COMPRESSED_RED                                  = 0x8225    # VERSION_3_0
+       COMPRESSED_RG                                   = 0x8226    # VERSION_3_0
+
+VERSION_3_0 enum:
+       use ARB_texture_rg                  RG
+       use ARB_texture_rg                  RG_INTEGER
+       use ARB_texture_rg                  R8
+       use ARB_texture_rg                  R16
+       use ARB_texture_rg                  RG8
+       use ARB_texture_rg                  RG16
+       use ARB_texture_rg                  R16F
+       use ARB_texture_rg                  R32F
+       use ARB_texture_rg                  RG16F
+       use ARB_texture_rg                  RG32F
+       use ARB_texture_rg                  R8I
+       use ARB_texture_rg                  R8UI
+       use ARB_texture_rg                  R16I
+       use ARB_texture_rg                  R16UI
+       use ARB_texture_rg                  R32I
+       use ARB_texture_rg                  R32UI
+       use ARB_texture_rg                  RG8I
+       use ARB_texture_rg                  RG8UI
+       use ARB_texture_rg                  RG16I
+       use ARB_texture_rg                  RG16UI
+       use ARB_texture_rg                  RG32I
+       use ARB_texture_rg                  RG32UI
+
+ARB_texture_rg enum: (note: no ARB suffixes)
+       RG                                              = 0x8227    # VERSION_3_0 / ARB_trg
+       RG_INTEGER                                      = 0x8228    # VERSION_3_0 / ARB_trg
+       R8                                              = 0x8229    # VERSION_3_0 / ARB_trg
+       R16                                             = 0x822A    # VERSION_3_0 / ARB_trg
+       RG8                                             = 0x822B    # VERSION_3_0 / ARB_trg
+       RG16                                            = 0x822C    # VERSION_3_0 / ARB_trg
+       R16F                                            = 0x822D    # VERSION_3_0 / ARB_trg
+       R32F                                            = 0x822E    # VERSION_3_0 / ARB_trg
+       RG16F                                           = 0x822F    # VERSION_3_0 / ARB_trg
+       RG32F                                           = 0x8230    # VERSION_3_0 / ARB_trg
+       R8I                                             = 0x8231    # VERSION_3_0 / ARB_trg
+       R8UI                                            = 0x8232    # VERSION_3_0 / ARB_trg
+       R16I                                            = 0x8233    # VERSION_3_0 / ARB_trg
+       R16UI                                           = 0x8234    # VERSION_3_0 / ARB_trg
+       R32I                                            = 0x8235    # VERSION_3_0 / ARB_trg
+       R32UI                                           = 0x8236    # VERSION_3_0 / ARB_trg
+       RG8I                                            = 0x8237    # VERSION_3_0 / ARB_trg
+       RG8UI                                           = 0x8238    # VERSION_3_0 / ARB_trg
+       RG16I                                           = 0x8239    # VERSION_3_0 / ARB_trg
+       RG16UI                                          = 0x823A    # VERSION_3_0 / ARB_trg
+       RG32I                                           = 0x823B    # VERSION_3_0 / ARB_trg
+       RG32UI                                          = 0x823C    # VERSION_3_0 / ARB_trg
+
+# ARB_future_use: 0x823D-0x823F
+
+###############################################################################
+
+# @@@ Any_vendor_future_use: 0x8240-0x82AF (released by Microsoft 2002/9/16)
+
+###############################################################################
+
+# ADD: 0x82B0-0x830F
+
+###############################################################################
+
+SGIX_depth_pass_instrument enum: 0x8310-0x8312
+       DEPTH_PASS_INSTRUMENT_SGIX                      = 0x8310
+       DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX             = 0x8311
+       DEPTH_PASS_INSTRUMENT_MAX_SGIX                  = 0x8312
+
+###############################################################################
+
+SGIX_fragments_instrument enum: 0x8313-0x8315
+       FRAGMENTS_INSTRUMENT_SGIX                       = 0x8313 # 1 I
+       FRAGMENTS_INSTRUMENT_COUNTERS_SGIX              = 0x8314 # 1 I
+       FRAGMENTS_INSTRUMENT_MAX_SGIX                   = 0x8315 # 1 I
+
+###############################################################################
+
+SGIX_convolution_accuracy enum:
+       CONVOLUTION_HINT_SGIX                           = 0x8316 # 1 I
+
+###############################################################################
+
+# SGIX_color_matrix_accuracy: 0x8317
+
+###############################################################################
+
+# 0x8318-0x8319
+SGIX_ycrcba enum:
+       YCRCB_SGIX                                      = 0x8318
+       YCRCBA_SGIX                                     = 0x8319
+
+###############################################################################
+
+# 0x831A-0x831F
+SGIX_slim enum:
+       UNPACK_COMPRESSED_SIZE_SGIX                     = 0x831A
+       PACK_MAX_COMPRESSED_SIZE_SGIX                   = 0x831B
+       PACK_COMPRESSED_SIZE_SGIX                       = 0x831C
+       SLIM8U_SGIX                                     = 0x831D
+       SLIM10U_SGIX                                    = 0x831E
+       SLIM12S_SGIX                                    = 0x831F
+
+###############################################################################
+
+SGIX_blend_alpha_minmax enum:
+       ALPHA_MIN_SGIX                                  = 0x8320
+       ALPHA_MAX_SGIX                                  = 0x8321
+
+###############################################################################
+
+SGIX_scalebias_hint enum:
+       SCALEBIAS_HINT_SGIX                             = 0x8322
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fog_layers: 0x8323-0x8328
+#      FOG_TYPE_SGIX                                   = 0x8323 # 1 I
+#      UNIFORM_SGIX                                    = 0x8324
+#      LAYERED_SGIX                                    = 0x8325
+#      FOG_GROUND_PLANE_SGIX                           = 0x8326 # 4 F
+#      FOG_LAYERS_POINTS_SGIX                          = 0x8327 # 1 I
+#      MAX_FOG_LAYERS_POINTS_SGIX                      = 0x8328 # 1 I
+
+###############################################################################
+
+SGIX_async enum:
+       ASYNC_MARKER_SGIX                               = 0x8329
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_texture_phase: 0x832A
+#      PHASE_SGIX                                      = 0x832A
+
+###############################################################################
+
+# SGIX_pixel_texture (additional; see above): 0x832B
+
+###############################################################################
+
+SGIX_async_histogram enum:
+       ASYNC_HISTOGRAM_SGIX                            = 0x832C
+       MAX_ASYNC_HISTOGRAM_SGIX                        = 0x832D
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_texture_mipmap_anisotropic: 0x832E-0x832F
+#      TEXTURE_MIPMAP_ANISOTROPY_SGIX                  = 0x832E
+#      MAX_MIPMAP_ANISOTROPY_SGIX                      = 0x832F # 1 I
+
+###############################################################################
+
+EXT_pixel_transform enum:
+       PIXEL_TRANSFORM_2D_EXT                          = 0x8330
+       PIXEL_MAG_FILTER_EXT                            = 0x8331
+       PIXEL_MIN_FILTER_EXT                            = 0x8332
+       PIXEL_CUBIC_WEIGHT_EXT                          = 0x8333
+       CUBIC_EXT                                       = 0x8334
+       AVERAGE_EXT                                     = 0x8335
+       PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT              = 0x8336
+       MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT          = 0x8337
+       PIXEL_TRANSFORM_2D_MATRIX_EXT                   = 0x8338
+
+# SUN_future_use: 0x8339-0x833F
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_cube_map: 0x8340-0x8348
+#      ENV_MAP_SGIX                                    = 0x8340
+#      CUBE_MAP_SGIX                                   = 0x8341
+#      CUBE_MAP_ZP_SGIX                                = 0x8342
+#      CUBE_MAP_ZN_SGIX                                = 0x8343
+#      CUBE_MAP_XN_SGIX                                = 0x8344
+#      CUBE_MAP_XP_SGIX                                = 0x8345
+#      CUBE_MAP_YN_SGIX                                = 0x8346
+#      CUBE_MAP_YP_SGIX                                = 0x8347
+#      CUBE_MAP_BINDING_SGIX                           = 0x8348 # 1 I
+
+###############################################################################
+
+# Unfortunately, there was a collision promoting to EXT from SGIX.
+# Use fog_coord's value of 0x8452 instead of the previously
+#   assigned FRAGMENT_DEPTH_EXT -> 0x834B.
+# EXT_light_texture: 0x8349-0x8352
+EXT_light_texture enum: 0x8349-0x8352
+       FRAGMENT_MATERIAL_EXT                           = 0x8349
+       FRAGMENT_NORMAL_EXT                             = 0x834A
+       FRAGMENT_COLOR_EXT                              = 0x834C
+       ATTENUATION_EXT                                 = 0x834D
+       SHADOW_ATTENUATION_EXT                          = 0x834E
+       TEXTURE_APPLICATION_MODE_EXT                    = 0x834F # 1 I
+       TEXTURE_LIGHT_EXT                               = 0x8350 # 1 I
+       TEXTURE_MATERIAL_FACE_EXT                       = 0x8351 # 1 I
+       TEXTURE_MATERIAL_PARAMETER_EXT                  = 0x8352 # 1 I
+       use EXT_fog_coord FRAGMENT_DEPTH_EXT
+
+###############################################################################
+
+SGIS_pixel_texture enum:
+       PIXEL_TEXTURE_SGIS                              = 0x8353 # 1 I
+       PIXEL_FRAGMENT_RGB_SOURCE_SGIS                  = 0x8354 # 1 I
+       PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS                = 0x8355 # 1 I
+       PIXEL_GROUP_COLOR_SGIS                          = 0x8356 # 1 I
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_pixel_texture_bits: 0x8357-0x8359
+#      COLOR_TO_TEXTURE_COORD_SGIX                     = 0x8357
+#      COLOR_BIT_PATTERN_SGIX                          = 0x8358
+#      COLOR_VALUE_SGIX                                = 0x8359
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_pixel_texture_lod: 0x835A
+#      PIXEL_TEX_GEN_LAMBDA_SOURCE_SGIX                = 0x835A
+
+###############################################################################
+
+SGIX_line_quality_hint enum:
+       LINE_QUALITY_HINT_SGIX                          = 0x835B
+
+###############################################################################
+
+SGIX_async_pixel enum:
+       ASYNC_TEX_IMAGE_SGIX                            = 0x835C
+       ASYNC_DRAW_PIXELS_SGIX                          = 0x835D
+       ASYNC_READ_PIXELS_SGIX                          = 0x835E
+       MAX_ASYNC_TEX_IMAGE_SGIX                        = 0x835F
+       MAX_ASYNC_DRAW_PIXELS_SGIX                      = 0x8360
+       MAX_ASYNC_READ_PIXELS_SGIX                      = 0x8361
+
+###############################################################################
+
+# EXT_packed_pixels (additional; see above): 0x8362-0x8368
+
+###############################################################################
+
+SGIX_texture_coordinate_clamp enum:
+       TEXTURE_MAX_CLAMP_S_SGIX                        = 0x8369
+       TEXTURE_MAX_CLAMP_T_SGIX                        = 0x836A
+       TEXTURE_MAX_CLAMP_R_SGIX                        = 0x836B
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fog_texture: 0x836C-0x836E
+#      FRAGMENT_FOG_SGIX                               = 0x836C
+#      TEXTURE_FOG_SGIX                                = 0x836D # 1 I
+#      FOG_PATCHY_FACTOR_SGIX                          = 0x836E
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fog_factor_to_alpha: 0x836F
+       FOG_FACTOR_TO_ALPHA_SGIX                        = 0x836F
+
+###############################################################################
+
+# HP: 0x8370-0x837F
+# NOTE: IBM is using values in this range, because of a bobble
+# when Pat Brown left at the same time as I assigned them the
+# next range and their registry became inconsistent. Unknown
+# whether HP has any conflicts as they have never reported using
+# any values in this range.
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       MIRRORED_REPEAT                                 = 0x8370
+
+ARB_texture_mirrored_repeat enum:
+       MIRRORED_REPEAT_ARB                             = 0x8370
+
+IBM_texture_mirrored_repeat enum:
+       MIRRORED_REPEAT_IBM                             = 0x8370
+
+# Aliases ARB_texture_mirrored_repeat enum above
+OES_texture_mirrored_repeat enum: (OpenGL ES only)
+       MIRRORED_REPEAT_OES                             = 0x8370
+
+###############################################################################
+
+# IBM: 0x8380-0x839F
+
+###############################################################################
+
+# S3: 0x83A0-0x83BF
+
+S3_s3tc enum:
+       RGB_S3TC                                        = 0x83A0
+       RGB4_S3TC                                       = 0x83A1
+       RGBA_S3TC                                       = 0x83A2
+       RGBA4_S3TC                                      = 0x83A3
+
+# S3_future_use: 0x83A4-0x83BF
+
+###############################################################################
+
+# Obsolete extension, never to be put in enumext.spec
+# SGIS_multitexture: 0x83C0-0x83E5
+#      SELECTED_TEXTURE_SGIS                           = 0x83C0 # 1 I
+#      SELECTED_TEXTURE_COORD_SET_SGIS                 = 0x83C1 # 1 I
+#      SELECTED_TEXTURE_TRANSFORM_SGIS                 = 0x83C2 # 1 I
+#      MAX_TEXTURES_SGIS                               = 0x83C3 # 1 I
+#      MAX_TEXTURE_COORD_SETS_SGIS                     = 0x83C4 # 1 I
+#      TEXTURE_COORD_SET_INTERLEAVE_FACTOR_SGIS        = 0x83C5 # 1 I
+#      TEXTURE_ENV_COORD_SET_SGIS                      = 0x83C6
+#      TEXTURE0_SGIS                                   = 0x83C7
+#      TEXTURE1_SGIS                                   = 0x83C8
+#      TEXTURE2_SGIS                                   = 0x83C9
+#      TEXTURE3_SGIS                                   = 0x83CA
+#
+# SGIS_multitexture_future_use: 0x83CB-0x83E5
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_bali_g_instruments: 0x83E6-0x83E9
+#      BALI_NUM_TRIS_CULLED_INSTRUMENT_SGIX            = 0x83E6 # 1 I
+#      BALI_NUM_PRIMS_CLIPPED_INSTRUMENT_SGIX          = 0x83E7 # 1 I
+#      BALI_NUM_PRIMS_REJECT_INSTRUMENT_SGIX           = 0x83E8 # 1 I
+#      BALI_NUM_PRIMS_CLIP_RESULT_INSTRUMENT_SGIX      = 0x83E9 # 1 I
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_bali_r_instruments: 0x83EA-0x83EC
+#      BALI_FRAGMENTS_GENERATED_INSTRUMENT_SGIX        = 0x83EA # 1 I
+#      BALI_DEPTH_PASS_INSTRUMENT_SGIX                 = 0x83EB # 1 I
+#      BALI_R_CHIP_COUNT_SGIX                          = 0x83EC # 1 I
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_occlusion_instrument: 0x83ED
+#      OCCLUSION_INSTRUMENT_SGIX                       = 0x83ED # 1 I
+
+###############################################################################
+
+SGIX_vertex_preclip enum:
+       VERTEX_PRECLIP_SGIX                             = 0x83EE
+       VERTEX_PRECLIP_HINT_SGIX                        = 0x83EF
+
+###############################################################################
+
+# INTEL: 0x83F0-0x83FF
+# Note that this block was reclaimed from NTP, who never shipped it,
+#   and reassigned to Intel.
+
+EXT_texture_compression_s3tc enum:
+       COMPRESSED_RGB_S3TC_DXT1_EXT                    = 0x83F0
+       COMPRESSED_RGBA_S3TC_DXT1_EXT                   = 0x83F1
+       COMPRESSED_RGBA_S3TC_DXT3_EXT                   = 0x83F2
+       COMPRESSED_RGBA_S3TC_DXT5_EXT                   = 0x83F3
+
+INTEL_parallel_arrays enum:
+       PARALLEL_ARRAYS_INTEL                           = 0x83F4
+       VERTEX_ARRAY_PARALLEL_POINTERS_INTEL            = 0x83F5
+       NORMAL_ARRAY_PARALLEL_POINTERS_INTEL            = 0x83F6
+       COLOR_ARRAY_PARALLEL_POINTERS_INTEL             = 0x83F7
+       TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL     = 0x83F8
+
+# INTEL_future_use: 0x83F9-0x83FF
+
+###############################################################################
+
+SGIX_fragment_lighting enum:
+       FRAGMENT_LIGHTING_SGIX                          = 0x8400 # 1 I
+       FRAGMENT_COLOR_MATERIAL_SGIX                    = 0x8401 # 1 I
+       FRAGMENT_COLOR_MATERIAL_FACE_SGIX               = 0x8402 # 1 I
+       FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX          = 0x8403 # 1 I
+       MAX_FRAGMENT_LIGHTS_SGIX                        = 0x8404 # 1 I
+       MAX_ACTIVE_LIGHTS_SGIX                          = 0x8405 # 1 I
+       CURRENT_RASTER_NORMAL_SGIX                      = 0x8406 # 1 I
+       LIGHT_ENV_MODE_SGIX                             = 0x8407 # 1 I
+       FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX          = 0x8408 # 1 I
+       FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX              = 0x8409 # 1 I
+       FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX               = 0x840A # 4 F
+       FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX  = 0x840B # 1 I
+       FRAGMENT_LIGHT0_SGIX                            = 0x840C # 1 I
+       FRAGMENT_LIGHT1_SGIX                            = 0x840D
+       FRAGMENT_LIGHT2_SGIX                            = 0x840E
+       FRAGMENT_LIGHT3_SGIX                            = 0x840F
+       FRAGMENT_LIGHT4_SGIX                            = 0x8410
+       FRAGMENT_LIGHT5_SGIX                            = 0x8411
+       FRAGMENT_LIGHT6_SGIX                            = 0x8412
+       FRAGMENT_LIGHT7_SGIX                            = 0x8413
+
+# SGIX_fragment_lighting_future_use: 0x8414-0x842B
+
+###############################################################################
+
+SGIX_resample enum:
+       PACK_RESAMPLE_SGIX                              = 0x842C
+       UNPACK_RESAMPLE_SGIX                            = 0x842D
+       RESAMPLE_REPLICATE_SGIX                         = 0x842E
+       RESAMPLE_ZERO_FILL_SGIX                         = 0x842F
+       RESAMPLE_DECIMATE_SGIX                          = 0x8430
+
+# SGIX_resample_future_use: 0x8431-0x8435
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fragment_lighting_space: 0x8436-0x8449
+#      EYE_SPACE_SGIX                                  = 0x8436
+#      TANGENT_SPACE_SGIX                              = 0x8437
+#      OBJECT_SPACE_SGIX                               = 0x8438
+#      TANGENT_ARRAY_SGIX                              = 0x8439
+#      BINORMAL_ARRAY_SGIX                             = 0x843A
+#      CURRENT_TANGENT_SGIX                            = 0x843B # 3 F
+#      CURRENT_BINORMAL_SGIX                           = 0x843C # 3 F
+#      FRAGMENT_LIGHT_SPACE_SGIX                       = 0x843D # 1 I
+#      TANGENT_ARRAY_TYPE_SGIX                         = 0x843E
+#      TANGENT_ARRAY_STRIDE_SGIX                       = 0x843F
+#      TANGENT_ARRAY_COUNT_SGIX                        = 0x8440
+#      BINORMAL_ARRAY_TYPE_SGIX                        = 0x8441
+#      BINORMAL_ARRAY_STRIDE_SGIX                      = 0x8442
+#      BINORMAL_ARRAY_COUNT_SGIX                       = 0x8443
+#      TANGENT_ARRAY_POINTER_SGIX                      = 0x8444
+#      BINORMAL_ARRAY_POINTER_SGIX                     = 0x8445
+#      MAP1_TANGENT_SGIX                               = 0x8446
+#      MAP2_TANGENT_SGIX                               = 0x8447
+#      MAP1_BINORMAL_SGIX                              = 0x8448
+#      MAP2_BINORMAL_SGIX                              = 0x8449
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_bali_timer_instruments: 0x844A-0x844C
+#      BALI_GEOM_TIMER_INSTRUMENT_SGIX                 = 0x844A # 1 I
+#      BALI_RASTER_TIMER_INSTRUMENT_SGIX               = 0x844B # 1 I
+#      BALI_INSTRUMENT_TIME_UNIT_SGIX                  = 0x844C # 1 I
+
+###############################################################################
+
+# SGIX_clipmap (additional; see above): 0x844D-0x844F
+
+###############################################################################
+
+# SGI (actually brokered for Id Software): 0x8450-0x845F
+
+VERSION_1_5 enum: (Consistent naming scheme for OpenGL 1.5)
+       FOG_COORD_SRC                                   = 0x8450    # alias GL_FOG_COORDINATE_SOURCE
+       FOG_COORD                                       = 0x8451    # alias GL_FOG_COORDINATE
+       CURRENT_FOG_COORD                               = 0x8453    # alias GL_CURRENT_FOG_COORDINATE
+       FOG_COORD_ARRAY_TYPE                            = 0x8454    # alias GL_FOG_COORDINATE_ARRAY_TYPE
+       FOG_COORD_ARRAY_STRIDE                          = 0x8455    # alias GL_FOG_COORDINATE_ARRAY_STRIDE
+       FOG_COORD_ARRAY_POINTER                         = 0x8456    # alias GL_FOG_COORDINATE_ARRAY_POINTER
+       FOG_COORD_ARRAY                                 = 0x8457    # alias GL_FOG_COORDINATE_ARRAY
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       FOG_COORDINATE_SOURCE                           = 0x8450 # 1 I
+       FOG_COORDINATE                                  = 0x8451
+       FRAGMENT_DEPTH                                  = 0x8452
+       CURRENT_FOG_COORDINATE                          = 0x8453 # 1 F
+       FOG_COORDINATE_ARRAY_TYPE                       = 0x8454 # 1 I
+       FOG_COORDINATE_ARRAY_STRIDE                     = 0x8455 # 1 I
+       FOG_COORDINATE_ARRAY_POINTER                    = 0x8456
+       FOG_COORDINATE_ARRAY                            = 0x8457 # 1 I
+
+EXT_fog_coord enum:
+       FOG_COORDINATE_SOURCE_EXT                       = 0x8450 # 1 I
+       FOG_COORDINATE_EXT                              = 0x8451
+       FRAGMENT_DEPTH_EXT                              = 0x8452
+       CURRENT_FOG_COORDINATE_EXT                      = 0x8453 # 1 F
+       FOG_COORDINATE_ARRAY_TYPE_EXT                   = 0x8454 # 1 I
+       FOG_COORDINATE_ARRAY_STRIDE_EXT                 = 0x8455 # 1 I
+       FOG_COORDINATE_ARRAY_POINTER_EXT                = 0x8456
+       FOG_COORDINATE_ARRAY_EXT                        = 0x8457 # 1 I
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       COLOR_SUM                                       = 0x8458 # 1 I
+       CURRENT_SECONDARY_COLOR                         = 0x8459 # 3 F
+       SECONDARY_COLOR_ARRAY_SIZE                      = 0x845A # 1 I
+       SECONDARY_COLOR_ARRAY_TYPE                      = 0x845B # 1 I
+       SECONDARY_COLOR_ARRAY_STRIDE                    = 0x845C # 1 I
+       SECONDARY_COLOR_ARRAY_POINTER                   = 0x845D
+       SECONDARY_COLOR_ARRAY                           = 0x845E # 1 I
+
+EXT_secondary_color enum:
+       COLOR_SUM_EXT                                   = 0x8458 # 1 I
+       CURRENT_SECONDARY_COLOR_EXT                     = 0x8459 # 3 F
+       SECONDARY_COLOR_ARRAY_SIZE_EXT                  = 0x845A # 1 I
+       SECONDARY_COLOR_ARRAY_TYPE_EXT                  = 0x845B # 1 I
+       SECONDARY_COLOR_ARRAY_STRIDE_EXT                = 0x845C # 1 I
+       SECONDARY_COLOR_ARRAY_POINTER_EXT               = 0x845D
+       SECONDARY_COLOR_ARRAY_EXT                       = 0x845E # 1 I
+
+ARB_vertex_program enum:
+       COLOR_SUM_ARB                                   = 0x8458 # 1 I  # ARB_vertex_program
+
+VERSION_2_1 enum:
+       CURRENT_RASTER_SECONDARY_COLOR                  = 0x845F
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+SGIX_icc_texture enum:
+#      RGB_ICC_SGIX                                    = 0x8460
+#      RGBA_ICC_SGIX                                   = 0x8461
+#      ALPHA_ICC_SGIX                                  = 0x8462
+#      LUMINANCE_ICC_SGIX                              = 0x8463
+#      INTENSITY_ICC_SGIX                              = 0x8464
+#      LUMINANCE_ALPHA_ICC_SGIX                        = 0x8465
+#      R5_G6_B5_ICC_SGIX                               = 0x8466
+#      R5_G6_B5_A8_ICC_SGIX                            = 0x8467
+#      ALPHA16_ICC_SGIX                                = 0x8468
+#      LUMINANCE16_ICC_SGIX                            = 0x8469
+#      INTENSITY16_ICC_SGIX                            = 0x846A
+#      LUMINANCE16_ALPHA8_ICC_SGIX                     = 0x846B
+
+###############################################################################
+
+# SGI_future_use: 0x846C
+
+###############################################################################
+
+# SMOOTH_* enums are new names for pre-1.2 enums.
+VERSION_1_2 enum:
+       SMOOTH_POINT_SIZE_RANGE                         = 0x0B12 # 2 F
+       SMOOTH_POINT_SIZE_GRANULARITY                   = 0x0B13 # 1 F
+       SMOOTH_LINE_WIDTH_RANGE                         = 0x0B22 # 2 F
+       SMOOTH_LINE_WIDTH_GRANULARITY                   = 0x0B23 # 1 F
+       ALIASED_POINT_SIZE_RANGE                        = 0x846D # 2 F
+       ALIASED_LINE_WIDTH_RANGE                        = 0x846E # 2 F
+
+###############################################################################
+
+# SGI_future_use: 0x846F
+
+###############################################################################
+
+# ATI Technologies (vendor multitexture, spec not yet released): 0x8470-0x848F
+
+###############################################################################
+
+# REND (Rendition): 0x8490-0x849F
+
+REND_screen_coordinates enum:
+       SCREEN_COORDINATES_REND                         = 0x8490
+       INVERTED_SCREEN_W_REND                          = 0x8491
+
+###############################################################################
+
+# ATI Technologies (vendor multitexture, spec not yet released): 0x84A0-84BF
+
+###############################################################################
+
+# OpenGL ARB: 0x84C0-0x84EF
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+       TEXTURE0                                        = 0x84C0
+       TEXTURE1                                        = 0x84C1
+       TEXTURE2                                        = 0x84C2
+       TEXTURE3                                        = 0x84C3
+       TEXTURE4                                        = 0x84C4
+       TEXTURE5                                        = 0x84C5
+       TEXTURE6                                        = 0x84C6
+       TEXTURE7                                        = 0x84C7
+       TEXTURE8                                        = 0x84C8
+       TEXTURE9                                        = 0x84C9
+       TEXTURE10                                       = 0x84CA
+       TEXTURE11                                       = 0x84CB
+       TEXTURE12                                       = 0x84CC
+       TEXTURE13                                       = 0x84CD
+       TEXTURE14                                       = 0x84CE
+       TEXTURE15                                       = 0x84CF
+       TEXTURE16                                       = 0x84D0
+       TEXTURE17                                       = 0x84D1
+       TEXTURE18                                       = 0x84D2
+       TEXTURE19                                       = 0x84D3
+       TEXTURE20                                       = 0x84D4
+       TEXTURE21                                       = 0x84D5
+       TEXTURE22                                       = 0x84D6
+       TEXTURE23                                       = 0x84D7
+       TEXTURE24                                       = 0x84D8
+       TEXTURE25                                       = 0x84D9
+       TEXTURE26                                       = 0x84DA
+       TEXTURE27                                       = 0x84DB
+       TEXTURE28                                       = 0x84DC
+       TEXTURE29                                       = 0x84DD
+       TEXTURE30                                       = 0x84DE
+       TEXTURE31                                       = 0x84DF
+       ACTIVE_TEXTURE                                  = 0x84E0 # 1 I
+       CLIENT_ACTIVE_TEXTURE                           = 0x84E1 # 1 I
+       MAX_TEXTURE_UNITS                               = 0x84E2 # 1 I
+
+ARB_multitexture enum:
+       TEXTURE0_ARB                                    = 0x84C0
+       TEXTURE1_ARB                                    = 0x84C1
+       TEXTURE2_ARB                                    = 0x84C2
+       TEXTURE3_ARB                                    = 0x84C3
+       TEXTURE4_ARB                                    = 0x84C4
+       TEXTURE5_ARB                                    = 0x84C5
+       TEXTURE6_ARB                                    = 0x84C6
+       TEXTURE7_ARB                                    = 0x84C7
+       TEXTURE8_ARB                                    = 0x84C8
+       TEXTURE9_ARB                                    = 0x84C9
+       TEXTURE10_ARB                                   = 0x84CA
+       TEXTURE11_ARB                                   = 0x84CB
+       TEXTURE12_ARB                                   = 0x84CC
+       TEXTURE13_ARB                                   = 0x84CD
+       TEXTURE14_ARB                                   = 0x84CE
+       TEXTURE15_ARB                                   = 0x84CF
+       TEXTURE16_ARB                                   = 0x84D0
+       TEXTURE17_ARB                                   = 0x84D1
+       TEXTURE18_ARB                                   = 0x84D2
+       TEXTURE19_ARB                                   = 0x84D3
+       TEXTURE20_ARB                                   = 0x84D4
+       TEXTURE21_ARB                                   = 0x84D5
+       TEXTURE22_ARB                                   = 0x84D6
+       TEXTURE23_ARB                                   = 0x84D7
+       TEXTURE24_ARB                                   = 0x84D8
+       TEXTURE25_ARB                                   = 0x84D9
+       TEXTURE26_ARB                                   = 0x84DA
+       TEXTURE27_ARB                                   = 0x84DB
+       TEXTURE28_ARB                                   = 0x84DC
+       TEXTURE29_ARB                                   = 0x84DD
+       TEXTURE30_ARB                                   = 0x84DE
+       TEXTURE31_ARB                                   = 0x84DF
+       ACTIVE_TEXTURE_ARB                              = 0x84E0 # 1 I
+       CLIENT_ACTIVE_TEXTURE_ARB                       = 0x84E1 # 1 I
+       MAX_TEXTURE_UNITS_ARB                           = 0x84E2 # 1 I
+
+# These are really core ES 1.1 enums, but haven't included
+# ES core enums in enum.spec yet
+OES_texture_env_crossbar enum: (OpenGL ES only)
+       use VERSION_1_3 TEXTURE0
+       use VERSION_1_3 TEXTURE1
+       use VERSION_1_3 TEXTURE2
+       use VERSION_1_3 TEXTURE3
+       use VERSION_1_3 TEXTURE4
+       use VERSION_1_3 TEXTURE5
+       use VERSION_1_3 TEXTURE6
+       use VERSION_1_3 TEXTURE7
+       use VERSION_1_3 TEXTURE8
+       use VERSION_1_3 TEXTURE9
+       use VERSION_1_3 TEXTURE10
+       use VERSION_1_3 TEXTURE11
+       use VERSION_1_3 TEXTURE12
+       use VERSION_1_3 TEXTURE13
+       use VERSION_1_3 TEXTURE14
+       use VERSION_1_3 TEXTURE15
+       use VERSION_1_3 TEXTURE16
+       use VERSION_1_3 TEXTURE17
+       use VERSION_1_3 TEXTURE18
+       use VERSION_1_3 TEXTURE19
+       use VERSION_1_3 TEXTURE20
+       use VERSION_1_3 TEXTURE21
+       use VERSION_1_3 TEXTURE22
+       use VERSION_1_3 TEXTURE23
+       use VERSION_1_3 TEXTURE24
+       use VERSION_1_3 TEXTURE25
+       use VERSION_1_3 TEXTURE26
+       use VERSION_1_3 TEXTURE27
+       use VERSION_1_3 TEXTURE28
+       use VERSION_1_3 TEXTURE29
+       use VERSION_1_3 TEXTURE30
+       use VERSION_1_3 TEXTURE31
+
+###############################################################################
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+       TRANSPOSE_MODELVIEW_MATRIX                      = 0x84E3 # 16 F
+       TRANSPOSE_PROJECTION_MATRIX                     = 0x84E4 # 16 F
+       TRANSPOSE_TEXTURE_MATRIX                        = 0x84E5 # 16 F
+       TRANSPOSE_COLOR_MATRIX                          = 0x84E6 # 16 F
+
+ARB_transpose_matrix enum:
+       TRANSPOSE_MODELVIEW_MATRIX_ARB                  = 0x84E3 # 16 F
+       TRANSPOSE_PROJECTION_MATRIX_ARB                 = 0x84E4 # 16 F
+       TRANSPOSE_TEXTURE_MATRIX_ARB                    = 0x84E5 # 16 F
+       TRANSPOSE_COLOR_MATRIX_ARB                      = 0x84E6 # 16 F
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+       SUBTRACT                                        = 0x84E7
+
+ARB_texture_env_combine enum:
+       SUBTRACT_ARB                                    = 0x84E7
+
+VERSION_3_0 enum:
+       use ARB_framebuffer_object          MAX_RENDERBUFFER_SIZE
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+       MAX_RENDERBUFFER_SIZE                           = 0x84E8    # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_object enum: (additional; see below):
+       MAX_RENDERBUFFER_SIZE_EXT                       = 0x84E8
+
+# Aliases EXT_framebuffer_object enum above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+       MAX_RENDERBUFFER_SIZE_OES                       = 0x84E8
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+       COMPRESSED_ALPHA                                = 0x84E9
+       COMPRESSED_LUMINANCE                            = 0x84EA
+       COMPRESSED_LUMINANCE_ALPHA                      = 0x84EB
+       COMPRESSED_INTENSITY                            = 0x84EC
+       COMPRESSED_RGB                                  = 0x84ED
+       COMPRESSED_RGBA                                 = 0x84EE
+       TEXTURE_COMPRESSION_HINT                        = 0x84EF
+       TEXTURE_COMPRESSED_IMAGE_SIZE                   = 0x86A0
+       TEXTURE_COMPRESSED                              = 0x86A1
+       NUM_COMPRESSED_TEXTURE_FORMATS                  = 0x86A2
+       COMPRESSED_TEXTURE_FORMATS                      = 0x86A3
+
+ARB_texture_compression enum:
+       COMPRESSED_ALPHA_ARB                            = 0x84E9
+       COMPRESSED_LUMINANCE_ARB                        = 0x84EA
+       COMPRESSED_LUMINANCE_ALPHA_ARB                  = 0x84EB
+       COMPRESSED_INTENSITY_ARB                        = 0x84EC
+       COMPRESSED_RGB_ARB                              = 0x84ED
+       COMPRESSED_RGBA_ARB                             = 0x84EE
+       TEXTURE_COMPRESSION_HINT_ARB                    = 0x84EF
+       TEXTURE_COMPRESSED_IMAGE_SIZE_ARB               = 0x86A0
+       TEXTURE_COMPRESSED_ARB                          = 0x86A1
+       NUM_COMPRESSED_TEXTURE_FORMATS_ARB              = 0x86A2
+       COMPRESSED_TEXTURE_FORMATS_ARB                  = 0x86A3
+
+###############################################################################
+
+# NVIDIA: 0x84F0-0x855F
+
+# NV_future_use: 0x84F0-0x84F1
+
+NV_fence enum:
+       ALL_COMPLETED_NV                                = 0x84F2
+       FENCE_STATUS_NV                                 = 0x84F3
+       FENCE_CONDITION_NV                              = 0x84F4
+
+VERSION_3_1 enum:
+       TEXTURE_RECTANGLE                               = 0x84F5
+       TEXTURE_BINDING_RECTANGLE                       = 0x84F6
+       PROXY_TEXTURE_RECTANGLE                         = 0x84F7
+       MAX_RECTANGLE_TEXTURE_SIZE                      = 0x84F8
+
+ARB_texture_rectangle enum:
+       TEXTURE_RECTANGLE_ARB                           = 0x84F5
+       TEXTURE_BINDING_RECTANGLE_ARB                   = 0x84F6
+       PROXY_TEXTURE_RECTANGLE_ARB                     = 0x84F7
+       MAX_RECTANGLE_TEXTURE_SIZE_ARB                  = 0x84F8
+
+NV_texture_rectangle enum:
+       TEXTURE_RECTANGLE_NV                            = 0x84F5
+       TEXTURE_BINDING_RECTANGLE_NV                    = 0x84F6
+       PROXY_TEXTURE_RECTANGLE_NV                      = 0x84F7
+       MAX_RECTANGLE_TEXTURE_SIZE_NV                   = 0x84F8
+
+VERSION_3_0 enum:
+       use ARB_framebuffer_object          DEPTH_STENCIL
+       use ARB_framebuffer_object          UNSIGNED_INT_24_8
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+       DEPTH_STENCIL                                   = 0x84F9    # VERSION_3_0 / ARB_fbo
+       UNSIGNED_INT_24_8                               = 0x84FA    # VERSION_3_0 / ARB_fbo
+
+EXT_packed_depth_stencil enum:
+       DEPTH_STENCIL_EXT                               = 0x84F9
+       UNSIGNED_INT_24_8_EXT                           = 0x84FA
+
+NV_packed_depth_stencil enum:
+       DEPTH_STENCIL_NV                                = 0x84F9
+       UNSIGNED_INT_24_8_NV                            = 0x84FA
+
+# Aliases EXT_packed_depth_stencil enums above
+OES_packed_depth_stencil enum: (OpenGL ES only)
+       DEPTH_STENCIL_OES                               = 0x84F9
+       UNSIGNED_INT_24_8_OES                           = 0x84FA
+
+# NV_future_use: 0x84FB-0x84FC
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       MAX_TEXTURE_LOD_BIAS                            = 0x84FD
+
+EXT_texture_lod_bias enum:
+       MAX_TEXTURE_LOD_BIAS_EXT                        = 0x84FD
+
+EXT_texture_filter_anisotropic enum:
+       TEXTURE_MAX_ANISOTROPY_EXT                      = 0x84FE
+       MAX_TEXTURE_MAX_ANISOTROPY_EXT                  = 0x84FF
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       TEXTURE_FILTER_CONTROL                          = 0x8500
+       TEXTURE_LOD_BIAS                                = 0x8501
+
+EXT_texture_lod_bias enum:
+       TEXTURE_FILTER_CONTROL_EXT                      = 0x8500
+       TEXTURE_LOD_BIAS_EXT                            = 0x8501
+
+EXT_vertex_weighting enum:
+       MODELVIEW1_STACK_DEPTH_EXT                      = 0x8502
+
+# NV_texture_env_combine4 (additional; see below): 0x8503
+
+NV_light_max_exponent enum:
+       MAX_SHININESS_NV                                = 0x8504
+       MAX_SPOT_EXPONENT_NV                            = 0x8505
+
+EXT_vertex_weighting enum:
+       MODELVIEW_MATRIX1_EXT                           = 0x8506
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       INCR_WRAP                                       = 0x8507
+       DECR_WRAP                                       = 0x8508
+
+EXT_stencil_wrap enum:
+       INCR_WRAP_EXT                                   = 0x8507
+       DECR_WRAP_EXT                                   = 0x8508
+
+# Aliases EXT_stencil_wrap enums above
+OES_stencil_wrap enum: (OpenGL ES only)
+       INCR_WRAP_OES                                   = 0x8507
+       DECR_WRAP_OES                                   = 0x8508
+
+EXT_vertex_weighting enum:
+       VERTEX_WEIGHTING_EXT                            = 0x8509
+       MODELVIEW1_EXT                                  = 0x850A
+       CURRENT_VERTEX_WEIGHT_EXT                       = 0x850B
+       VERTEX_WEIGHT_ARRAY_EXT                         = 0x850C
+       VERTEX_WEIGHT_ARRAY_SIZE_EXT                    = 0x850D
+       VERTEX_WEIGHT_ARRAY_TYPE_EXT                    = 0x850E
+       VERTEX_WEIGHT_ARRAY_STRIDE_EXT                  = 0x850F
+       VERTEX_WEIGHT_ARRAY_POINTER_EXT                 = 0x8510
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+       NORMAL_MAP                                      = 0x8511
+       REFLECTION_MAP                                  = 0x8512
+       TEXTURE_CUBE_MAP                                = 0x8513
+       TEXTURE_BINDING_CUBE_MAP                        = 0x8514
+       TEXTURE_CUBE_MAP_POSITIVE_X                     = 0x8515
+       TEXTURE_CUBE_MAP_NEGATIVE_X                     = 0x8516
+       TEXTURE_CUBE_MAP_POSITIVE_Y                     = 0x8517
+       TEXTURE_CUBE_MAP_NEGATIVE_Y                     = 0x8518
+       TEXTURE_CUBE_MAP_POSITIVE_Z                     = 0x8519
+       TEXTURE_CUBE_MAP_NEGATIVE_Z                     = 0x851A
+       PROXY_TEXTURE_CUBE_MAP                          = 0x851B
+       MAX_CUBE_MAP_TEXTURE_SIZE                       = 0x851C
+
+EXT_texture_cube_map enum:
+       NORMAL_MAP_EXT                                  = 0x8511
+       REFLECTION_MAP_EXT                              = 0x8512
+       TEXTURE_CUBE_MAP_EXT                            = 0x8513
+       TEXTURE_BINDING_CUBE_MAP_EXT                    = 0x8514
+       TEXTURE_CUBE_MAP_POSITIVE_X_EXT                 = 0x8515
+       TEXTURE_CUBE_MAP_NEGATIVE_X_EXT                 = 0x8516
+       TEXTURE_CUBE_MAP_POSITIVE_Y_EXT                 = 0x8517
+       TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT                 = 0x8518
+       TEXTURE_CUBE_MAP_POSITIVE_Z_EXT                 = 0x8519
+       TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT                 = 0x851A
+       PROXY_TEXTURE_CUBE_MAP_EXT                      = 0x851B
+       MAX_CUBE_MAP_TEXTURE_SIZE_EXT                   = 0x851C
+
+NV_texgen_reflection enum:
+       NORMAL_MAP                                      = 0x8511
+       REFLECTION_MAP                                  = 0x8512
+
+ARB_texture_cube_map enum:
+       NORMAL_MAP_ARB                                  = 0x8511
+       REFLECTION_MAP_ARB                              = 0x8512
+       TEXTURE_CUBE_MAP_ARB                            = 0x8513
+       TEXTURE_BINDING_CUBE_MAP_ARB                    = 0x8514
+       TEXTURE_CUBE_MAP_POSITIVE_X_ARB                 = 0x8515
+       TEXTURE_CUBE_MAP_NEGATIVE_X_ARB                 = 0x8516
+       TEXTURE_CUBE_MAP_POSITIVE_Y_ARB                 = 0x8517
+       TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB                 = 0x8518
+       TEXTURE_CUBE_MAP_POSITIVE_Z_ARB                 = 0x8519
+       TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB                 = 0x851A
+       PROXY_TEXTURE_CUBE_MAP_ARB                      = 0x851B
+       MAX_CUBE_MAP_TEXTURE_SIZE_ARB                   = 0x851C
+
+# Aliases ARB_texture_cube_map enums above
+OES_texture_cube_map enum: (OpenGL ES only; additional; see below)
+       NORMAL_MAP_OES                                  = 0x8511
+       REFLECTION_MAP_OES                              = 0x8512
+       TEXTURE_CUBE_MAP_OES                            = 0x8513
+       TEXTURE_BINDING_CUBE_MAP_OES                    = 0x8514
+       TEXTURE_CUBE_MAP_POSITIVE_X_OES                 = 0x8515
+       TEXTURE_CUBE_MAP_NEGATIVE_X_OES                 = 0x8516
+       TEXTURE_CUBE_MAP_POSITIVE_Y_OES                 = 0x8517
+       TEXTURE_CUBE_MAP_NEGATIVE_Y_OES                 = 0x8518
+       TEXTURE_CUBE_MAP_POSITIVE_Z_OES                 = 0x8519
+       TEXTURE_CUBE_MAP_NEGATIVE_Z_OES                 = 0x851A
+       MAX_CUBE_MAP_TEXTURE_SIZE_OES                   = 0x851C
+
+NV_vertex_array_range enum:
+       VERTEX_ARRAY_RANGE_NV                           = 0x851D
+       VERTEX_ARRAY_RANGE_LENGTH_NV                    = 0x851E
+       VERTEX_ARRAY_RANGE_VALID_NV                     = 0x851F
+       MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV               = 0x8520
+       VERTEX_ARRAY_RANGE_POINTER_NV                   = 0x8521
+
+# @@@ How does this interact with NV_vertex_array_range?
+APPLE_vertex_array_range enum:
+       VERTEX_ARRAY_RANGE_APPLE                        = 0x851D
+       VERTEX_ARRAY_RANGE_LENGTH_APPLE                 = 0x851E
+       VERTEX_ARRAY_STORAGE_HINT_APPLE                 = 0x851F
+       VERTEX_ARRAY_RANGE_POINTER_APPLE                = 0x8521
+       STORAGE_CACHED_APPLE                            = 0x85BE
+       STORAGE_SHARED_APPLE                            = 0x85BF
+
+NV_register_combiners enum:
+       REGISTER_COMBINERS_NV                           = 0x8522
+       VARIABLE_A_NV                                   = 0x8523
+       VARIABLE_B_NV                                   = 0x8524
+       VARIABLE_C_NV                                   = 0x8525
+       VARIABLE_D_NV                                   = 0x8526
+       VARIABLE_E_NV                                   = 0x8527
+       VARIABLE_F_NV                                   = 0x8528
+       VARIABLE_G_NV                                   = 0x8529
+       CONSTANT_COLOR0_NV                              = 0x852A
+       CONSTANT_COLOR1_NV                              = 0x852B
+       PRIMARY_COLOR_NV                                = 0x852C
+       SECONDARY_COLOR_NV                              = 0x852D
+       SPARE0_NV                                       = 0x852E
+       SPARE1_NV                                       = 0x852F
+       DISCARD_NV                                      = 0x8530
+       E_TIMES_F_NV                                    = 0x8531
+       SPARE0_PLUS_SECONDARY_COLOR_NV                  = 0x8532
+
+# NV_vertex_array_range2:
+       VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV             = 0x8533
+
+# NV_multisample_filter_hint:
+       MULTISAMPLE_FILTER_HINT_NV                      = 0x8534
+
+NV_register_combiners2 enum:
+       PER_STAGE_CONSTANTS_NV                          = 0x8535
+
+NV_register_combiners enum: (additional; see above):
+       UNSIGNED_IDENTITY_NV                            = 0x8536
+       UNSIGNED_INVERT_NV                              = 0x8537
+       EXPAND_NORMAL_NV                                = 0x8538
+       EXPAND_NEGATE_NV                                = 0x8539
+       HALF_BIAS_NORMAL_NV                             = 0x853A
+       HALF_BIAS_NEGATE_NV                             = 0x853B
+       SIGNED_IDENTITY_NV                              = 0x853C
+       UNSIGNED_NEGATE_NV                              = 0x853D
+       SCALE_BY_TWO_NV                                 = 0x853E
+       SCALE_BY_FOUR_NV                                = 0x853F
+       SCALE_BY_ONE_HALF_NV                            = 0x8540
+       BIAS_BY_NEGATIVE_ONE_HALF_NV                    = 0x8541
+       COMBINER_INPUT_NV                               = 0x8542
+       COMBINER_MAPPING_NV                             = 0x8543
+       COMBINER_COMPONENT_USAGE_NV                     = 0x8544
+       COMBINER_AB_DOT_PRODUCT_NV                      = 0x8545
+       COMBINER_CD_DOT_PRODUCT_NV                      = 0x8546
+       COMBINER_MUX_SUM_NV                             = 0x8547
+       COMBINER_SCALE_NV                               = 0x8548
+       COMBINER_BIAS_NV                                = 0x8549
+       COMBINER_AB_OUTPUT_NV                           = 0x854A
+       COMBINER_CD_OUTPUT_NV                           = 0x854B
+       COMBINER_SUM_OUTPUT_NV                          = 0x854C
+       MAX_GENERAL_COMBINERS_NV                        = 0x854D
+       NUM_GENERAL_COMBINERS_NV                        = 0x854E
+       COLOR_SUM_CLAMP_NV                              = 0x854F
+       COMBINER0_NV                                    = 0x8550
+       COMBINER1_NV                                    = 0x8551
+       COMBINER2_NV                                    = 0x8552
+       COMBINER3_NV                                    = 0x8553
+       COMBINER4_NV                                    = 0x8554
+       COMBINER5_NV                                    = 0x8555
+       COMBINER6_NV                                    = 0x8556
+       COMBINER7_NV                                    = 0x8557
+
+
+NV_primitive_restart enum:
+       PRIMITIVE_RESTART_NV                            = 0x8558
+       PRIMITIVE_RESTART_INDEX_NV                      = 0x8559
+
+NV_fog_distance enum:
+       FOG_GEN_MODE_NV                                 = 0x855A
+       EYE_RADIAL_NV                                   = 0x855B
+       EYE_PLANE_ABSOLUTE_NV                           = 0x855C
+
+NV_texgen_emboss enum:
+       EMBOSS_LIGHT_NV                                 = 0x855D
+       EMBOSS_CONSTANT_NV                              = 0x855E
+       EMBOSS_MAP_NV                                   = 0x855F
+
+###############################################################################
+
+# Intergraph/Intense3D/3Dlabs: 0x8560-0x856F
+
+INGR_color_clamp enum:
+       RED_MIN_CLAMP_INGR                              = 0x8560
+       GREEN_MIN_CLAMP_INGR                            = 0x8561
+       BLUE_MIN_CLAMP_INGR                             = 0x8562
+       ALPHA_MIN_CLAMP_INGR                            = 0x8563
+       RED_MAX_CLAMP_INGR                              = 0x8564
+       GREEN_MAX_CLAMP_INGR                            = 0x8565
+       BLUE_MAX_CLAMP_INGR                             = 0x8566
+       ALPHA_MAX_CLAMP_INGR                            = 0x8567
+
+INGR_interlace_read enum:
+       INTERLACE_READ_INGR                             = 0x8568
+
+# 3Dlabs_future_use: 0x8569-0x856F
+
+###############################################################################
+
+# ATI/NVIDIA: 0x8570-0x859F
+
+VERSION_1_5 enum: (Consistent naming scheme for OpenGL 1.5)
+       SRC0_RGB                                        = 0x8580    # alias GL_SOURCE0_RGB
+       SRC1_RGB                                        = 0x8581    # alias GL_SOURCE1_RGB
+       SRC2_RGB                                        = 0x8582    # alias GL_SOURCE2_RGB
+       SRC0_ALPHA                                      = 0x8588    # alias GL_SOURCE0_ALPHA
+       SRC1_ALPHA                                      = 0x8589    # alias GL_SOURCE1_ALPHA
+       SRC2_ALPHA                                      = 0x858A    # alias GL_SOURCE2_ALPHA
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+       COMBINE                                         = 0x8570
+       COMBINE_RGB                                     = 0x8571
+       COMBINE_ALPHA                                   = 0x8572
+       RGB_SCALE                                       = 0x8573
+       ADD_SIGNED                                      = 0x8574
+       INTERPOLATE                                     = 0x8575
+       CONSTANT                                        = 0x8576
+       PRIMARY_COLOR                                   = 0x8577
+       PREVIOUS                                        = 0x8578
+       SOURCE0_RGB                                     = 0x8580
+       SOURCE1_RGB                                     = 0x8581
+       SOURCE2_RGB                                     = 0x8582
+       SOURCE0_ALPHA                                   = 0x8588
+       SOURCE1_ALPHA                                   = 0x8589
+       SOURCE2_ALPHA                                   = 0x858A
+       OPERAND0_RGB                                    = 0x8590
+       OPERAND1_RGB                                    = 0x8591
+       OPERAND2_RGB                                    = 0x8592
+       OPERAND0_ALPHA                                  = 0x8598
+       OPERAND1_ALPHA                                  = 0x8599
+       OPERAND2_ALPHA                                  = 0x859A
+
+EXT_texture_env_combine enum:
+       COMBINE_EXT                                     = 0x8570
+       COMBINE_RGB_EXT                                 = 0x8571
+       COMBINE_ALPHA_EXT                               = 0x8572
+       RGB_SCALE_EXT                                   = 0x8573
+       ADD_SIGNED_EXT                                  = 0x8574
+       INTERPOLATE_EXT                                 = 0x8575
+       CONSTANT_EXT                                    = 0x8576
+       PRIMARY_COLOR_EXT                               = 0x8577
+       PREVIOUS_EXT                                    = 0x8578
+       SOURCE0_RGB_EXT                                 = 0x8580
+       SOURCE1_RGB_EXT                                 = 0x8581
+       SOURCE2_RGB_EXT                                 = 0x8582
+       SOURCE0_ALPHA_EXT                               = 0x8588
+       SOURCE1_ALPHA_EXT                               = 0x8589
+       SOURCE2_ALPHA_EXT                               = 0x858A
+       OPERAND0_RGB_EXT                                = 0x8590
+       OPERAND1_RGB_EXT                                = 0x8591
+       OPERAND2_RGB_EXT                                = 0x8592
+       OPERAND0_ALPHA_EXT                              = 0x8598
+       OPERAND1_ALPHA_EXT                              = 0x8599
+       OPERAND2_ALPHA_EXT                              = 0x859A
+
+NV_texture_env_combine4 enum:
+       COMBINE4_NV                                     = 0x8503
+       SOURCE3_RGB_NV                                  = 0x8583
+       SOURCE3_ALPHA_NV                                = 0x858B
+       OPERAND3_RGB_NV                                 = 0x8593
+       OPERAND3_ALPHA_NV                               = 0x859B
+
+# "Future use" => "additional combiner input/output enums" only
+# ATI/NVIDIA_future_use: 0x8584-0x8587
+# ATI/NVIDIA_future_use: 0x858C-0x858F
+# ATI/NVIDIA_future_use: 0x8594-0x8597
+# ATI/NVIDIA_future_use: 0x859C-0x859F
+
+###############################################################################
+
+SGIX_subsample enum:
+       PACK_SUBSAMPLE_RATE_SGIX                        = 0x85A0
+       UNPACK_SUBSAMPLE_RATE_SGIX                      = 0x85A1
+       PIXEL_SUBSAMPLE_4444_SGIX                       = 0x85A2
+       PIXEL_SUBSAMPLE_2424_SGIX                       = 0x85A3
+       PIXEL_SUBSAMPLE_4242_SGIX                       = 0x85A4
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIS_color_range: 0x85A5-0x85AD
+#      EXTENDED_RANGE_SGIS                             = 0x85A5
+#      MIN_RED_SGIS                                    = 0x85A6
+#      MAX_RED_SGIS                                    = 0x85A7
+#      MIN_GREEN_SGIS                                  = 0x85A8
+#      MAX_GREEN_SGIS                                  = 0x85A9
+#      MIN_BLUE_SGIS                                   = 0x85AA
+#      MAX_BLUE_SGIS                                   = 0x85AB
+#      MIN_ALPHA_SGIS                                  = 0x85AC
+#      MAX_ALPHA_SGIS                                  = 0x85AD
+
+###############################################################################
+
+EXT_texture_perturb_normal enum:
+       PERTURB_EXT                                     = 0x85AE
+       TEXTURE_NORMAL_EXT                              = 0x85AF
+
+###############################################################################
+
+# Apple: 0x85B0-0x85BF
+
+APPLE_specular_vector enum:
+       LIGHT_MODEL_SPECULAR_VECTOR_APPLE               = 0x85B0
+
+APPLE_transform_hint enum:
+       TRANSFORM_HINT_APPLE                            = 0x85B1
+
+APPLE_client_storage enum:
+       UNPACK_CLIENT_STORAGE_APPLE                     = 0x85B2
+
+# May also be part of APPLE_fence
+APPLE_object_purgeable enum: (additional; see below)
+       BUFFER_OBJECT_APPLE                             = 0x85B3
+
+# APPLE_future_use: 0x85B4
+
+## From Jeremy 2006/10/18 (Khronos bug 632) - unknown extension name
+#      STORAGE_CLIENT_APPLE                            = 0x85B4
+
+VERSION_3_0 enum:
+       use ARB_vertex_array_object         VERTEX_ARRAY_BINDING
+
+ARB_vertex_array_object enum: (note: no ARB suffixes)
+       VERTEX_ARRAY_BINDING                            = 0x85B5    # VERSION_3_0 / ARB_vao
+
+APPLE_vertex_array_object enum:
+       VERTEX_ARRAY_BINDING_APPLE                      = 0x85B5
+
+# APPLE_future_use: 0x85B6
+## From Jeremy 2006/10/18 (Khronos bug 632) - unknown extension name
+#      TEXTURE_MINIMIZE_STORAGE_APPLE                  = 0x85B6
+
+APPLE_texture_range enum:  (additional; see below)
+       TEXTURE_RANGE_LENGTH_APPLE                      = 0x85B7
+       TEXTURE_RANGE_POINTER_APPLE                     = 0x85B8
+
+APPLE_ycbcr_422 enum:
+       YCBCR_422_APPLE                                 = 0x85B9
+       UNSIGNED_SHORT_8_8_APPLE                        = 0x85BA
+       UNSIGNED_SHORT_8_8_REV_APPLE                    = 0x85BB
+
+MESA_ycbcr_texture enum: (additional; see below)
+       UNSIGNED_SHORT_8_8_MESA                         = 0x85BA
+       UNSIGNED_SHORT_8_8_REV_MESA                     = 0x85BB
+
+APPLE_texture_range enum:
+       TEXTURE_STORAGE_HINT_APPLE                      = 0x85BC
+       STORAGE_PRIVATE_APPLE                           = 0x85BD
+
+APPLE_vertex_array_range enum: (additional; see above):
+       STORAGE_CACHED_APPLE                            = 0x85BE
+       STORAGE_SHARED_APPLE                            = 0x85BF
+
+APPLE_texture_range enum:
+       use APPLE_vertex_array_range        STORAGE_CACHED_APPLE
+       use APPLE_vertex_array_range        STORAGE_SHARED_APPLE
+
+###############################################################################
+
+# Sun: 0x85C0-0x85CF
+
+SUNX_general_triangle_list enum: (additional; see above)
+        REPLACEMENT_CODE_ARRAY_SUN                     = 0x85C0
+        REPLACEMENT_CODE_ARRAY_TYPE_SUN                = 0x85C1
+        REPLACEMENT_CODE_ARRAY_STRIDE_SUN              = 0x85C2
+        REPLACEMENT_CODE_ARRAY_POINTER_SUN             = 0x85C3
+        R1UI_V3F_SUN                                   = 0x85C4
+        R1UI_C4UB_V3F_SUN                              = 0x85C5
+        R1UI_C3F_V3F_SUN                               = 0x85C6
+        R1UI_N3F_V3F_SUN                               = 0x85C7
+        R1UI_C4F_N3F_V3F_SUN                           = 0x85C8
+        R1UI_T2F_V3F_SUN                               = 0x85C9
+        R1UI_T2F_N3F_V3F_SUN                           = 0x85CA
+        R1UI_T2F_C4F_N3F_V3F_SUN                       = 0x85CB
+
+SUN_slice_accum enum:
+       SLICE_ACCUM_SUN                                 = 0x85CC
+
+# SUN_future_use: 0x85CD-0x85CF
+
+###############################################################################
+
+# Unknown extension name, not in enumext.spec
+# 3Dlabs/Autodesk: 0x85D0-0x85DF
+#      FACET_NORMAL_AUTODESK                           = 0x85D0
+#      FACET_NORMAL_ARRAY_AUTODESK                     = 0x85D1
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_texture_range: 0x85E0-0x85FB
+#      RGB_SIGNED_SGIX                                 = 0x85E0
+#      RGBA_SIGNED_SGIX                                = 0x85E1
+#      ALPHA_SIGNED_SGIX                               = 0x85E2
+#      LUMINANCE_SIGNED_SGIX                           = 0x85E3
+#      INTENSITY_SIGNED_SGIX                           = 0x85E4
+#      LUMINANCE_ALPHA_SIGNED_SGIX                     = 0x85E5
+#      RGB16_SIGNED_SGIX                               = 0x85E6
+#      RGBA16_SIGNED_SGIX                              = 0x85E7
+#      ALPHA16_SIGNED_SGIX                             = 0x85E8
+#      LUMINANCE16_SIGNED_SGIX                         = 0x85E9
+#      INTENSITY16_SIGNED_SGIX                         = 0x85EA
+#      LUMINANCE16_ALPHA16_SIGNED_SGIX                 = 0x85EB
+#      RGB_EXTENDED_RANGE_SGIX                         = 0x85EC
+#      RGBA_EXTENDED_RANGE_SGIX                        = 0x85ED
+#      ALPHA_EXTENDED_RANGE_SGIX                       = 0x85EE
+#      LUMINANCE_EXTENDED_RANGE_SGIX                   = 0x85EF
+#      INTENSITY_EXTENDED_RANGE_SGIX                   = 0x85F0
+#      LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX             = 0x85F1
+#      RGB16_EXTENDED_RANGE_SGIX                       = 0x85F2
+#      RGBA16_EXTENDED_RANGE_SGIX                      = 0x85F3
+#      ALPHA16_EXTENDED_RANGE_SGIX                     = 0x85F4
+#      LUMINANCE16_EXTENDED_RANGE_SGIX                 = 0x85F5
+#      INTENSITY16_EXTENDED_RANGE_SGIX                 = 0x85F6
+#      LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX         = 0x85F7
+#      MIN_LUMINANCE_SGIS                              = 0x85F8
+#      MAX_LUMINANCE_SGIS                              = 0x85F9
+#      MIN_INTENSITY_SGIS                              = 0x85FA
+#      MAX_INTENSITY_SGIS                              = 0x85FB
+
+###############################################################################
+
+# SGI_future_use: 0x85FC-0x85FF
+
+###############################################################################
+
+# Sun: 0x8600-0x861F
+
+# SUN_future_use: 0x8600-0x8613
+
+SUN_mesh_array enum: 0x8614-0x8615
+       QUAD_MESH_SUN                                   = 0x8614
+       TRIANGLE_MESH_SUN                               = 0x8615
+
+# SUN_future_use: 0x8614-0x861F
+
+###############################################################################
+
+# NVIDIA: 0x8620-0x867F
+
+NV_vertex_program enum:
+       VERTEX_PROGRAM_NV                               = 0x8620
+       VERTEX_STATE_PROGRAM_NV                         = 0x8621
+       ATTRIB_ARRAY_SIZE_NV                            = 0x8623
+       ATTRIB_ARRAY_STRIDE_NV                          = 0x8624
+       ATTRIB_ARRAY_TYPE_NV                            = 0x8625
+       CURRENT_ATTRIB_NV                               = 0x8626
+       PROGRAM_LENGTH_NV                               = 0x8627
+       PROGRAM_STRING_NV                               = 0x8628
+       MODELVIEW_PROJECTION_NV                         = 0x8629
+       IDENTITY_NV                                     = 0x862A
+       INVERSE_NV                                      = 0x862B
+       TRANSPOSE_NV                                    = 0x862C
+       INVERSE_TRANSPOSE_NV                            = 0x862D
+       MAX_TRACK_MATRIX_STACK_DEPTH_NV                 = 0x862E
+       MAX_TRACK_MATRICES_NV                           = 0x862F
+       MATRIX0_NV                                      = 0x8630
+       MATRIX1_NV                                      = 0x8631
+       MATRIX2_NV                                      = 0x8632
+       MATRIX3_NV                                      = 0x8633
+       MATRIX4_NV                                      = 0x8634
+       MATRIX5_NV                                      = 0x8635
+       MATRIX6_NV                                      = 0x8636
+       MATRIX7_NV                                      = 0x8637
+##################
+#
+#     Reserved:
+#
+#     MATRIX8_NV                                     = 0x8638
+#     MATRIX9_NV                                     = 0x8639
+#     MATRIX10_NV                                    = 0x863A
+#     MATRIX11_NV                                    = 0x863B
+#     MATRIX12_NV                                    = 0x863C
+#     MATRIX13_NV                                    = 0x863D
+#     MATRIX14_NV                                    = 0x863E
+#     MATRIX15_NV                                    = 0x863F
+#
+###################
+       CURRENT_MATRIX_STACK_DEPTH_NV                   = 0x8640
+       CURRENT_MATRIX_NV                               = 0x8641
+       VERTEX_PROGRAM_POINT_SIZE_NV                    = 0x8642
+       VERTEX_PROGRAM_TWO_SIDE_NV                      = 0x8643
+       PROGRAM_PARAMETER_NV                            = 0x8644
+       ATTRIB_ARRAY_POINTER_NV                         = 0x8645
+       PROGRAM_TARGET_NV                               = 0x8646
+       PROGRAM_RESIDENT_NV                             = 0x8647
+       TRACK_MATRIX_NV                                 = 0x8648
+       TRACK_MATRIX_TRANSFORM_NV                       = 0x8649
+       VERTEX_PROGRAM_BINDING_NV                       = 0x864A
+       PROGRAM_ERROR_POSITION_NV                       = 0x864B
+       VERTEX_ATTRIB_ARRAY0_NV                         = 0x8650
+       VERTEX_ATTRIB_ARRAY1_NV                         = 0x8651
+       VERTEX_ATTRIB_ARRAY2_NV                         = 0x8652
+       VERTEX_ATTRIB_ARRAY3_NV                         = 0x8653
+       VERTEX_ATTRIB_ARRAY4_NV                         = 0x8654
+       VERTEX_ATTRIB_ARRAY5_NV                         = 0x8655
+       VERTEX_ATTRIB_ARRAY6_NV                         = 0x8656
+       VERTEX_ATTRIB_ARRAY7_NV                         = 0x8657
+       VERTEX_ATTRIB_ARRAY8_NV                         = 0x8658
+       VERTEX_ATTRIB_ARRAY9_NV                         = 0x8659
+       VERTEX_ATTRIB_ARRAY10_NV                        = 0x865A
+       VERTEX_ATTRIB_ARRAY11_NV                        = 0x865B
+       VERTEX_ATTRIB_ARRAY12_NV                        = 0x865C
+       VERTEX_ATTRIB_ARRAY13_NV                        = 0x865D
+       VERTEX_ATTRIB_ARRAY14_NV                        = 0x865E
+       VERTEX_ATTRIB_ARRAY15_NV                        = 0x865F
+       MAP1_VERTEX_ATTRIB0_4_NV                        = 0x8660
+       MAP1_VERTEX_ATTRIB1_4_NV                        = 0x8661
+       MAP1_VERTEX_ATTRIB2_4_NV                        = 0x8662
+       MAP1_VERTEX_ATTRIB3_4_NV                        = 0x8663
+       MAP1_VERTEX_ATTRIB4_4_NV                        = 0x8664
+       MAP1_VERTEX_ATTRIB5_4_NV                        = 0x8665
+       MAP1_VERTEX_ATTRIB6_4_NV                        = 0x8666
+       MAP1_VERTEX_ATTRIB7_4_NV                        = 0x8667
+       MAP1_VERTEX_ATTRIB8_4_NV                        = 0x8668
+       MAP1_VERTEX_ATTRIB9_4_NV                        = 0x8669
+       MAP1_VERTEX_ATTRIB10_4_NV                       = 0x866A
+       MAP1_VERTEX_ATTRIB11_4_NV                       = 0x866B
+       MAP1_VERTEX_ATTRIB12_4_NV                       = 0x866C
+       MAP1_VERTEX_ATTRIB13_4_NV                       = 0x866D
+       MAP1_VERTEX_ATTRIB14_4_NV                       = 0x866E
+       MAP1_VERTEX_ATTRIB15_4_NV                       = 0x866F
+       MAP2_VERTEX_ATTRIB0_4_NV                        = 0x8670
+       MAP2_VERTEX_ATTRIB1_4_NV                        = 0x8671
+       MAP2_VERTEX_ATTRIB2_4_NV                        = 0x8672
+       MAP2_VERTEX_ATTRIB3_4_NV                        = 0x8673
+       MAP2_VERTEX_ATTRIB4_4_NV                        = 0x8674
+       MAP2_VERTEX_ATTRIB5_4_NV                        = 0x8675
+       MAP2_VERTEX_ATTRIB6_4_NV                        = 0x8676
+       MAP2_VERTEX_ATTRIB7_4_NV                        = 0x8677
+       MAP2_VERTEX_ATTRIB8_4_NV                        = 0x8678
+       MAP2_VERTEX_ATTRIB9_4_NV                        = 0x8679
+       MAP2_VERTEX_ATTRIB10_4_NV                       = 0x867A
+       MAP2_VERTEX_ATTRIB11_4_NV                       = 0x867B
+       MAP2_VERTEX_ATTRIB12_4_NV                       = 0x867C
+       MAP2_VERTEX_ATTRIB13_4_NV                       = 0x867D
+       MAP2_VERTEX_ATTRIB14_4_NV                       = 0x867E
+       MAP2_VERTEX_ATTRIB15_4_NV                       = 0x867F
+
+# NV_texture_shader (additional; see below): 0x864C-0x864E
+
+VERSION_3_2 enum:
+       PROGRAM_POINT_SIZE                              = 0x8642
+
+ARB_geometry_shader4 enum: (additional; see below)
+       PROGRAM_POINT_SIZE_ARB                          = 0x8642
+
+NV_geometry_program4 enum: (additional; see below)
+       PROGRAM_POINT_SIZE_EXT                          = 0x8642
+
+VERSION_3_2 enum:
+       use ARB_depth_clamp                 DEPTH_CLAMP
+
+ARB_depth_clamp enum:
+       DEPTH_CLAMP                                     = 0x864F
+
+NV_depth_clamp enum:
+       DEPTH_CLAMP_NV                                  = 0x864F
+
+VERSION_2_0 enum: (Promoted from ARB_vertex_shader; only some values)
+       VERTEX_ATTRIB_ARRAY_ENABLED                     = 0x8622    # VERSION_2_0
+       VERTEX_ATTRIB_ARRAY_SIZE                        = 0x8623    # VERSION_2_0
+       VERTEX_ATTRIB_ARRAY_STRIDE                      = 0x8624    # VERSION_2_0
+       VERTEX_ATTRIB_ARRAY_TYPE                        = 0x8625    # VERSION_2_0
+       CURRENT_VERTEX_ATTRIB                           = 0x8626    # VERSION_2_0
+       VERTEX_PROGRAM_POINT_SIZE                       = 0x8642    # VERSION_2_0
+       VERTEX_PROGRAM_TWO_SIDE                         = 0x8643    # VERSION_2_0
+       VERTEX_ATTRIB_ARRAY_POINTER                     = 0x8645    # VERSION_2_0
+
+ARB_vertex_program enum: (additional; see above; reuses NV_vertex_program values)
+ARB_fragment_program enum: (additional; only some values; see below)
+# (Unfortunately, PROGRAM_BINDING_ARB does accidentally reuse 0x8677)
+       VERTEX_PROGRAM_ARB                              = 0x8620
+       VERTEX_ATTRIB_ARRAY_ENABLED_ARB                 = 0x8622
+       VERTEX_ATTRIB_ARRAY_SIZE_ARB                    = 0x8623
+       VERTEX_ATTRIB_ARRAY_STRIDE_ARB                  = 0x8624
+       VERTEX_ATTRIB_ARRAY_TYPE_ARB                    = 0x8625
+       CURRENT_VERTEX_ATTRIB_ARB                       = 0x8626
+       PROGRAM_LENGTH_ARB                              = 0x8627    # ARB_fragment_program
+       PROGRAM_STRING_ARB                              = 0x8628    # ARB_fragment_program
+       MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB              = 0x862E    # ARB_fragment_program
+       MAX_PROGRAM_MATRICES_ARB                        = 0x862F    # ARB_fragment_program
+       CURRENT_MATRIX_STACK_DEPTH_ARB                  = 0x8640    # ARB_fragment_program
+       CURRENT_MATRIX_ARB                              = 0x8641    # ARB_fragment_program
+       VERTEX_PROGRAM_POINT_SIZE_ARB                   = 0x8642
+       VERTEX_PROGRAM_TWO_SIDE_ARB                     = 0x8643
+       VERTEX_ATTRIB_ARRAY_POINTER_ARB                 = 0x8645
+       PROGRAM_ERROR_POSITION_ARB                      = 0x864B    # ARB_fragment_program
+       PROGRAM_BINDING_ARB                             = 0x8677    # ARB_fragment_program
+
+###############################################################################
+
+# Pixelfusion: 0x8680-0x869F
+
+###############################################################################
+
+# OpenGL ARB: 0x86A0-0x86AF
+
+# ARB_texture_compression/1.3 (additional; see above): 0x86A0-0x86A3
+
+ARB_vertex_blend enum:
+       MAX_VERTEX_UNITS_ARB                            = 0x86A4
+       ACTIVE_VERTEX_UNITS_ARB                         = 0x86A5
+       WEIGHT_SUM_UNITY_ARB                            = 0x86A6
+       VERTEX_BLEND_ARB                                = 0x86A7
+       CURRENT_WEIGHT_ARB                              = 0x86A8
+       WEIGHT_ARRAY_TYPE_ARB                           = 0x86A9
+       WEIGHT_ARRAY_STRIDE_ARB                         = 0x86AA
+       WEIGHT_ARRAY_SIZE_ARB                           = 0x86AB
+       WEIGHT_ARRAY_POINTER_ARB                        = 0x86AC
+       WEIGHT_ARRAY_ARB                                = 0x86AD
+# Note: MODELVIEW0/1 are defined in other extensions, but not as ARB)
+       MODELVIEW0_ARB                                  = 0x1700
+       MODELVIEW1_ARB                                  = 0x850A
+       MODELVIEW2_ARB                                  = 0x8722
+       MODELVIEW3_ARB                                  = 0x8723
+       MODELVIEW4_ARB                                  = 0x8724
+       MODELVIEW5_ARB                                  = 0x8725
+       MODELVIEW6_ARB                                  = 0x8726
+       MODELVIEW7_ARB                                  = 0x8727
+       MODELVIEW8_ARB                                  = 0x8728
+       MODELVIEW9_ARB                                  = 0x8729
+       MODELVIEW10_ARB                                 = 0x872A
+       MODELVIEW11_ARB                                 = 0x872B
+       MODELVIEW12_ARB                                 = 0x872C
+       MODELVIEW13_ARB                                 = 0x872D
+       MODELVIEW14_ARB                                 = 0x872E
+       MODELVIEW15_ARB                                 = 0x872F
+       MODELVIEW16_ARB                                 = 0x8730
+       MODELVIEW17_ARB                                 = 0x8731
+       MODELVIEW18_ARB                                 = 0x8732
+       MODELVIEW19_ARB                                 = 0x8733
+       MODELVIEW20_ARB                                 = 0x8734
+       MODELVIEW21_ARB                                 = 0x8735
+       MODELVIEW22_ARB                                 = 0x8736
+       MODELVIEW23_ARB                                 = 0x8737
+       MODELVIEW24_ARB                                 = 0x8738
+       MODELVIEW25_ARB                                 = 0x8739
+       MODELVIEW26_ARB                                 = 0x873A
+       MODELVIEW27_ARB                                 = 0x873B
+       MODELVIEW28_ARB                                 = 0x873C
+       MODELVIEW29_ARB                                 = 0x873D
+       MODELVIEW30_ARB                                 = 0x873E
+       MODELVIEW31_ARB                                 = 0x873F
+
+# Aliases ARB_vertex_blend enums above
+OES_matrix_palette enum: (OpenGL ES only; additional; see below)
+       MAX_VERTEX_UNITS_OES                            = 0x86A4
+       WEIGHT_ARRAY_OES                                = 0x86AD
+       WEIGHT_ARRAY_TYPE_OES                           = 0x86A9
+       WEIGHT_ARRAY_STRIDE_OES                         = 0x86AA
+       WEIGHT_ARRAY_SIZE_OES                           = 0x86AB
+       WEIGHT_ARRAY_POINTER_OES                        = 0x86AC
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+       DOT3_RGB                                        = 0x86AE
+       DOT3_RGBA                                       = 0x86AF
+
+ARB_texture_env_dot3 enum:
+       DOT3_RGB_ARB                                    = 0x86AE
+       DOT3_RGBA_ARB                                   = 0x86AF
+
+IMG_texture_env_enhanced_fixed_function enum: (OpenGL ES only; additional; see below)
+       DOT3_RGBA_IMG                                   = 0x86AF
+
+###############################################################################
+
+# 3Dfx: 0x86B0-0x86BF
+
+3DFX_texture_compression_FXT1 enum:
+       COMPRESSED_RGB_FXT1_3DFX                        = 0x86B0
+       COMPRESSED_RGBA_FXT1_3DFX                       = 0x86B1
+
+3DFX_multisample enum:
+       MULTISAMPLE_3DFX                                = 0x86B2
+       SAMPLE_BUFFERS_3DFX                             = 0x86B3
+       SAMPLES_3DFX                                    = 0x86B4
+       MULTISAMPLE_BIT_3DFX                            = 0x20000000
+
+# 3DFX_future_use: 0x86B5-0x86BF
+
+###############################################################################
+
+# NVIDIA: 0x86C0-0x871F
+
+NV_evaluators enum:
+       EVAL_2D_NV                                      = 0x86C0
+       EVAL_TRIANGULAR_2D_NV                           = 0x86C1
+       MAP_TESSELLATION_NV                             = 0x86C2
+       MAP_ATTRIB_U_ORDER_NV                           = 0x86C3
+       MAP_ATTRIB_V_ORDER_NV                           = 0x86C4
+       EVAL_FRACTIONAL_TESSELLATION_NV                 = 0x86C5
+       EVAL_VERTEX_ATRRIB0_NV                          = 0x86C6
+       EVAL_VERTEX_ATRRIB1_NV                          = 0x86C7
+       EVAL_VERTEX_ATRRIB2_NV                          = 0x86C8
+       EVAL_VERTEX_ATRRIB3_NV                          = 0x86C9
+       EVAL_VERTEX_ATRRIB4_NV                          = 0x86CA
+       EVAL_VERTEX_ATRRIB5_NV                          = 0x86CB
+       EVAL_VERTEX_ATRRIB6_NV                          = 0x86CC
+       EVAL_VERTEX_ATRRIB7_NV                          = 0x86CD
+       EVAL_VERTEX_ATRRIB8_NV                          = 0x86CE
+       EVAL_VERTEX_ATRRIB9_NV                          = 0x86CF
+       EVAL_VERTEX_ATRRIB10_NV                         = 0x86D0
+       EVAL_VERTEX_ATRRIB11_NV                         = 0x86D1
+       EVAL_VERTEX_ATRRIB12_NV                         = 0x86D2
+       EVAL_VERTEX_ATRRIB13_NV                         = 0x86D3
+       EVAL_VERTEX_ATRRIB14_NV                         = 0x86D4
+       EVAL_VERTEX_ATRRIB15_NV                         = 0x86D5
+       MAX_MAP_TESSELLATION_NV                         = 0x86D6
+       MAX_RATIONAL_EVAL_ORDER_NV                      = 0x86D7
+
+# NV_future_use: 0x86D8
+
+NV_texture_shader enum:
+       OFFSET_TEXTURE_RECTANGLE_NV                     = 0x864C
+       OFFSET_TEXTURE_RECTANGLE_SCALE_NV               = 0x864D
+       DOT_PRODUCT_TEXTURE_RECTANGLE_NV                = 0x864E
+       RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV            = 0x86D9
+       UNSIGNED_INT_S8_S8_8_8_NV                       = 0x86DA
+       UNSIGNED_INT_8_8_S8_S8_REV_NV                   = 0x86DB
+       DSDT_MAG_INTENSITY_NV                           = 0x86DC
+       SHADER_CONSISTENT_NV                            = 0x86DD
+       TEXTURE_SHADER_NV                               = 0x86DE
+       SHADER_OPERATION_NV                             = 0x86DF
+       CULL_MODES_NV                                   = 0x86E0
+       OFFSET_TEXTURE_MATRIX_NV                        = 0x86E1
+       OFFSET_TEXTURE_SCALE_NV                         = 0x86E2
+       OFFSET_TEXTURE_BIAS_NV                          = 0x86E3
+       OFFSET_TEXTURE_2D_MATRIX_NV                     = GL_OFFSET_TEXTURE_MATRIX_NV
+       OFFSET_TEXTURE_2D_SCALE_NV                      = GL_OFFSET_TEXTURE_SCALE_NV
+       OFFSET_TEXTURE_2D_BIAS_NV                       = GL_OFFSET_TEXTURE_BIAS_NV
+       PREVIOUS_TEXTURE_INPUT_NV                       = 0x86E4
+       CONST_EYE_NV                                    = 0x86E5
+       PASS_THROUGH_NV                                 = 0x86E6
+       CULL_FRAGMENT_NV                                = 0x86E7
+       OFFSET_TEXTURE_2D_NV                            = 0x86E8
+       DEPENDENT_AR_TEXTURE_2D_NV                      = 0x86E9
+       DEPENDENT_GB_TEXTURE_2D_NV                      = 0x86EA
+       DOT_PRODUCT_NV                                  = 0x86EC
+       DOT_PRODUCT_DEPTH_REPLACE_NV                    = 0x86ED
+       DOT_PRODUCT_TEXTURE_2D_NV                       = 0x86EE
+       DOT_PRODUCT_TEXTURE_CUBE_MAP_NV                 = 0x86F0
+       DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV                 = 0x86F1
+       DOT_PRODUCT_REFLECT_CUBE_MAP_NV                 = 0x86F2
+       DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV       = 0x86F3
+       HILO_NV                                         = 0x86F4
+       DSDT_NV                                         = 0x86F5
+       DSDT_MAG_NV                                     = 0x86F6
+       DSDT_MAG_VIB_NV                                 = 0x86F7
+       HILO16_NV                                       = 0x86F8
+       SIGNED_HILO_NV                                  = 0x86F9
+       SIGNED_HILO16_NV                                = 0x86FA
+       SIGNED_RGBA_NV                                  = 0x86FB
+       SIGNED_RGBA8_NV                                 = 0x86FC
+       SIGNED_RGB_NV                                   = 0x86FE
+       SIGNED_RGB8_NV                                  = 0x86FF
+       SIGNED_LUMINANCE_NV                             = 0x8701
+       SIGNED_LUMINANCE8_NV                            = 0x8702
+       SIGNED_LUMINANCE_ALPHA_NV                       = 0x8703
+       SIGNED_LUMINANCE8_ALPHA8_NV                     = 0x8704
+       SIGNED_ALPHA_NV                                 = 0x8705
+       SIGNED_ALPHA8_NV                                = 0x8706
+       SIGNED_INTENSITY_NV                             = 0x8707
+       SIGNED_INTENSITY8_NV                            = 0x8708
+       DSDT8_NV                                        = 0x8709
+       DSDT8_MAG8_NV                                   = 0x870A
+       DSDT8_MAG8_INTENSITY8_NV                        = 0x870B
+       SIGNED_RGB_UNSIGNED_ALPHA_NV                    = 0x870C
+       SIGNED_RGB8_UNSIGNED_ALPHA8_NV                  = 0x870D
+       HI_SCALE_NV                                     = 0x870E
+       LO_SCALE_NV                                     = 0x870F
+       DS_SCALE_NV                                     = 0x8710
+       DT_SCALE_NV                                     = 0x8711
+       MAGNITUDE_SCALE_NV                              = 0x8712
+       VIBRANCE_SCALE_NV                               = 0x8713
+       HI_BIAS_NV                                      = 0x8714
+       LO_BIAS_NV                                      = 0x8715
+       DS_BIAS_NV                                      = 0x8716
+       DT_BIAS_NV                                      = 0x8717
+       MAGNITUDE_BIAS_NV                               = 0x8718
+       VIBRANCE_BIAS_NV                                = 0x8719
+       TEXTURE_BORDER_VALUES_NV                        = 0x871A
+       TEXTURE_HI_SIZE_NV                              = 0x871B
+       TEXTURE_LO_SIZE_NV                              = 0x871C
+       TEXTURE_DS_SIZE_NV                              = 0x871D
+       TEXTURE_DT_SIZE_NV                              = 0x871E
+       TEXTURE_MAG_SIZE_NV                             = 0x871F
+
+NV_texture_shader2 enum:
+       DOT_PRODUCT_TEXTURE_3D_NV                       = 0x86EF
+
+# NV_future_use: 0x86EB
+# NV_future_use: 0x86FD
+# NV_future_use: 0x8700
+
+###############################################################################
+
+# OpenGL ARB: 0x8720-0x873F
+
+# ARB_vertex_blend (additional; see above): 0x8720-0x873F
+
+###############################################################################
+
+# ATI: 0x8740-0x874F
+
+EXT_texture_env_dot3 enum:
+       DOT3_RGB_EXT                                    = 0x8740
+       DOT3_RGBA_EXT                                   = 0x8741
+
+# There's a collision between AMD_program_binary_Z400 and EXT_texture_env_dot3!
+AMD_program_binary_Z400 enum: (OpenGL ES only)
+       Z400_BINARY_AMD                                 = 0x8740
+
+# There's a collision between OES_get_program_binary and EXT_texture_env_dot3!
+OES_get_program_binary enum: (OpenGL ES only; additional; see below)
+       PROGRAM_BINARY_LENGTH_OES                       = 0x8741
+
+ATI_texture_mirror_once enum:
+       MIRROR_CLAMP_ATI                                = 0x8742
+       MIRROR_CLAMP_TO_EDGE_ATI                        = 0x8743
+
+EXT_texture_mirror_clamp enum:
+       MIRROR_CLAMP_EXT                                = 0x8742
+       MIRROR_CLAMP_TO_EDGE_EXT                        = 0x8743
+
+ATI_texture_env_combine3 enum:
+       MODULATE_ADD_ATI                                = 0x8744
+       MODULATE_SIGNED_ADD_ATI                         = 0x8745
+       MODULATE_SUBTRACT_ATI                           = 0x8746
+
+# ATI_future_use: 0x8747-0x874F
+
+###############################################################################
+
+# MESA: 0x8750-0x875F
+
+MESA_packed_depth_stencil enum:
+       DEPTH_STENCIL_MESA                              = 0x8750
+       UNSIGNED_INT_24_8_MESA                          = 0x8751
+       UNSIGNED_INT_8_24_REV_MESA                      = 0x8752
+       UNSIGNED_SHORT_15_1_MESA                        = 0x8753
+       UNSIGNED_SHORT_1_15_REV_MESA                    = 0x8754
+
+MESA_trace enum:
+       TRACE_ALL_BITS_MESA                             = 0xFFFF
+       TRACE_OPERATIONS_BIT_MESA                       = 0x0001
+       TRACE_PRIMITIVES_BIT_MESA                       = 0x0002
+       TRACE_ARRAYS_BIT_MESA                           = 0x0004
+       TRACE_TEXTURES_BIT_MESA                         = 0x0008
+       TRACE_PIXELS_BIT_MESA                           = 0x0010
+       TRACE_ERRORS_BIT_MESA                           = 0x0020
+       TRACE_MASK_MESA                                 = 0x8755
+       TRACE_NAME_MESA                                 = 0x8756
+
+MESA_ycbcr_texture enum:
+       YCBCR_MESA                                      = 0x8757
+
+MESA_pack_invert enum:
+       PACK_INVERT_MESA                                = 0x8758
+
+MESAX_texture_stack enum:
+       TEXTURE_1D_STACK_MESAX                          = 0x8759
+       TEXTURE_2D_STACK_MESAX                          = 0x875A
+       PROXY_TEXTURE_1D_STACK_MESAX                    = 0x875B
+       PROXY_TEXTURE_2D_STACK_MESAX                    = 0x875C
+       TEXTURE_1D_STACK_BINDING_MESAX                  = 0x875D
+       TEXTURE_2D_STACK_BINDING_MESAX                  = 0x875E
+
+MESA_shader_debug enum:
+       DEBUG_OBJECT_MESA                               = 0x8759
+       DEBUG_PRINT_MESA                                = 0x875A
+       DEBUG_ASSERT_MESA                               = 0x875B
+
+# MESA_future_use: 0x875F
+
+###############################################################################
+
+# ATI: 0x8760-0x883F
+
+ATI_vertex_array_object enum:
+       STATIC_ATI                                      = 0x8760
+       DYNAMIC_ATI                                     = 0x8761
+       PRESERVE_ATI                                    = 0x8762
+       DISCARD_ATI                                     = 0x8763
+       OBJECT_BUFFER_SIZE_ATI                          = 0x8764
+       OBJECT_BUFFER_USAGE_ATI                         = 0x8765
+       ARRAY_OBJECT_BUFFER_ATI                         = 0x8766
+       ARRAY_OBJECT_OFFSET_ATI                         = 0x8767
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+       BUFFER_SIZE                                     = 0x8764
+       BUFFER_USAGE                                    = 0x8765
+
+ARB_vertex_buffer_object enum: (additional; aliases some ATI enums; see below)
+       BUFFER_SIZE_ARB                                 = 0x8764
+       BUFFER_USAGE_ARB                                = 0x8765
+
+ATI_element_array enum:
+       ELEMENT_ARRAY_ATI                               = 0x8768
+       ELEMENT_ARRAY_TYPE_ATI                          = 0x8769
+       ELEMENT_ARRAY_POINTER_ATI                       = 0x876A
+
+# @@@ (extends ATI_element_array, I think???)
+APPLE_element_array enum:
+       ELEMENT_ARRAY_APPLE                             = 0x8768
+       ELEMENT_ARRAY_TYPE_APPLE                        = 0x8769
+       ELEMENT_ARRAY_POINTER_APPLE                     = 0x876A
+
+ATI_vertex_streams enum:
+       MAX_VERTEX_STREAMS_ATI                          = 0x876B
+       VERTEX_STREAM0_ATI                              = 0x876C
+       VERTEX_STREAM1_ATI                              = 0x876D
+       VERTEX_STREAM2_ATI                              = 0x876E
+       VERTEX_STREAM3_ATI                              = 0x876F
+       VERTEX_STREAM4_ATI                              = 0x8770
+       VERTEX_STREAM5_ATI                              = 0x8771
+       VERTEX_STREAM6_ATI                              = 0x8772
+       VERTEX_STREAM7_ATI                              = 0x8773
+       VERTEX_SOURCE_ATI                               = 0x8774
+
+ATI_envmap_bumpmap enum:
+       BUMP_ROT_MATRIX_ATI                             = 0x8775
+       BUMP_ROT_MATRIX_SIZE_ATI                        = 0x8776
+       BUMP_NUM_TEX_UNITS_ATI                          = 0x8777
+       BUMP_TEX_UNITS_ATI                              = 0x8778
+       DUDV_ATI                                        = 0x8779
+       DU8DV8_ATI                                      = 0x877A
+       BUMP_ENVMAP_ATI                                 = 0x877B
+       BUMP_TARGET_ATI                                 = 0x877C
+
+# ATI_future_use: 0x877D-0x877F
+
+EXT_vertex_shader enum:
+       VERTEX_SHADER_EXT                               = 0x8780
+       VERTEX_SHADER_BINDING_EXT                       = 0x8781
+       OP_INDEX_EXT                                    = 0x8782
+       OP_NEGATE_EXT                                   = 0x8783
+       OP_DOT3_EXT                                     = 0x8784
+       OP_DOT4_EXT                                     = 0x8785
+       OP_MUL_EXT                                      = 0x8786
+       OP_ADD_EXT                                      = 0x8787
+       OP_MADD_EXT                                     = 0x8788
+       OP_FRAC_EXT                                     = 0x8789
+       OP_MAX_EXT                                      = 0x878A
+       OP_MIN_EXT                                      = 0x878B
+       OP_SET_GE_EXT                                   = 0x878C
+       OP_SET_LT_EXT                                   = 0x878D
+       OP_CLAMP_EXT                                    = 0x878E
+       OP_FLOOR_EXT                                    = 0x878F
+       OP_ROUND_EXT                                    = 0x8790
+       OP_EXP_BASE_2_EXT                               = 0x8791
+       OP_LOG_BASE_2_EXT                               = 0x8792
+       OP_POWER_EXT                                    = 0x8793
+       OP_RECIP_EXT                                    = 0x8794
+       OP_RECIP_SQRT_EXT                               = 0x8795
+       OP_SUB_EXT                                      = 0x8796
+       OP_CROSS_PRODUCT_EXT                            = 0x8797
+       OP_MULTIPLY_MATRIX_EXT                          = 0x8798
+       OP_MOV_EXT                                      = 0x8799
+       OUTPUT_VERTEX_EXT                               = 0x879A
+       OUTPUT_COLOR0_EXT                               = 0x879B
+       OUTPUT_COLOR1_EXT                               = 0x879C
+       OUTPUT_TEXTURE_COORD0_EXT                       = 0x879D
+       OUTPUT_TEXTURE_COORD1_EXT                       = 0x879E
+       OUTPUT_TEXTURE_COORD2_EXT                       = 0x879F
+       OUTPUT_TEXTURE_COORD3_EXT                       = 0x87A0
+       OUTPUT_TEXTURE_COORD4_EXT                       = 0x87A1
+       OUTPUT_TEXTURE_COORD5_EXT                       = 0x87A2
+       OUTPUT_TEXTURE_COORD6_EXT                       = 0x87A3
+       OUTPUT_TEXTURE_COORD7_EXT                       = 0x87A4
+       OUTPUT_TEXTURE_COORD8_EXT                       = 0x87A5
+       OUTPUT_TEXTURE_COORD9_EXT                       = 0x87A6
+       OUTPUT_TEXTURE_COORD10_EXT                      = 0x87A7
+       OUTPUT_TEXTURE_COORD11_EXT                      = 0x87A8
+       OUTPUT_TEXTURE_COORD12_EXT                      = 0x87A9
+       OUTPUT_TEXTURE_COORD13_EXT                      = 0x87AA
+       OUTPUT_TEXTURE_COORD14_EXT                      = 0x87AB
+       OUTPUT_TEXTURE_COORD15_EXT                      = 0x87AC
+       OUTPUT_TEXTURE_COORD16_EXT                      = 0x87AD
+       OUTPUT_TEXTURE_COORD17_EXT                      = 0x87AE
+       OUTPUT_TEXTURE_COORD18_EXT                      = 0x87AF
+       OUTPUT_TEXTURE_COORD19_EXT                      = 0x87B0
+       OUTPUT_TEXTURE_COORD20_EXT                      = 0x87B1
+       OUTPUT_TEXTURE_COORD21_EXT                      = 0x87B2
+       OUTPUT_TEXTURE_COORD22_EXT                      = 0x87B3
+       OUTPUT_TEXTURE_COORD23_EXT                      = 0x87B4
+       OUTPUT_TEXTURE_COORD24_EXT                      = 0x87B5
+       OUTPUT_TEXTURE_COORD25_EXT                      = 0x87B6
+       OUTPUT_TEXTURE_COORD26_EXT                      = 0x87B7
+       OUTPUT_TEXTURE_COORD27_EXT                      = 0x87B8
+       OUTPUT_TEXTURE_COORD28_EXT                      = 0x87B9
+       OUTPUT_TEXTURE_COORD29_EXT                      = 0x87BA
+       OUTPUT_TEXTURE_COORD30_EXT                      = 0x87BB
+       OUTPUT_TEXTURE_COORD31_EXT                      = 0x87BC
+       OUTPUT_FOG_EXT                                  = 0x87BD
+       SCALAR_EXT                                      = 0x87BE
+       VECTOR_EXT                                      = 0x87BF
+       MATRIX_EXT                                      = 0x87C0
+       VARIANT_EXT                                     = 0x87C1
+       INVARIANT_EXT                                   = 0x87C2
+       LOCAL_CONSTANT_EXT                              = 0x87C3
+       LOCAL_EXT                                       = 0x87C4
+       MAX_VERTEX_SHADER_INSTRUCTIONS_EXT              = 0x87C5
+       MAX_VERTEX_SHADER_VARIANTS_EXT                  = 0x87C6
+       MAX_VERTEX_SHADER_INVARIANTS_EXT                = 0x87C7
+       MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT           = 0x87C8
+       MAX_VERTEX_SHADER_LOCALS_EXT                    = 0x87C9
+       MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT    = 0x87CA
+       MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT        = 0x87CB
+       MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87CC
+       MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT      = 0x87CD
+       MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT          = 0x87CE
+       VERTEX_SHADER_INSTRUCTIONS_EXT                  = 0x87CF
+       VERTEX_SHADER_VARIANTS_EXT                      = 0x87D0
+       VERTEX_SHADER_INVARIANTS_EXT                    = 0x87D1
+       VERTEX_SHADER_LOCAL_CONSTANTS_EXT               = 0x87D2
+       VERTEX_SHADER_LOCALS_EXT                        = 0x87D3
+       VERTEX_SHADER_OPTIMIZED_EXT                     = 0x87D4
+       X_EXT                                           = 0x87D5
+       Y_EXT                                           = 0x87D6
+       Z_EXT                                           = 0x87D7
+       W_EXT                                           = 0x87D8
+       NEGATIVE_X_EXT                                  = 0x87D9
+       NEGATIVE_Y_EXT                                  = 0x87DA
+       NEGATIVE_Z_EXT                                  = 0x87DB
+       NEGATIVE_W_EXT                                  = 0x87DC
+       ZERO_EXT                                        = 0x87DD
+       ONE_EXT                                         = 0x87DE
+       NEGATIVE_ONE_EXT                                = 0x87DF
+       NORMALIZED_RANGE_EXT                            = 0x87E0
+       FULL_RANGE_EXT                                  = 0x87E1
+       CURRENT_VERTEX_EXT                              = 0x87E2
+       MVP_MATRIX_EXT                                  = 0x87E3
+       VARIANT_VALUE_EXT                               = 0x87E4
+       VARIANT_DATATYPE_EXT                            = 0x87E5
+       VARIANT_ARRAY_STRIDE_EXT                        = 0x87E6
+       VARIANT_ARRAY_TYPE_EXT                          = 0x87E7
+       VARIANT_ARRAY_EXT                               = 0x87E8
+       VARIANT_ARRAY_POINTER_EXT                       = 0x87E9
+       INVARIANT_VALUE_EXT                             = 0x87EA
+       INVARIANT_DATATYPE_EXT                          = 0x87EB
+       LOCAL_CONSTANT_VALUE_EXT                        = 0x87EC
+       LOCAL_CONSTANT_DATATYPE_EXT                     = 0x87ED
+
+AMD_compressed_ATC_texture enum: (OpenGL ES only) (additional; see below)
+       ATC_RGBA_INTERPOLATED_ALPHA_AMD                 = 0x87EE
+
+ATI_pn_triangles enum:
+       PN_TRIANGLES_ATI                                = 0x87F0
+       MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI          = 0x87F1
+       PN_TRIANGLES_POINT_MODE_ATI                     = 0x87F2
+       PN_TRIANGLES_NORMAL_MODE_ATI                    = 0x87F3
+       PN_TRIANGLES_TESSELATION_LEVEL_ATI              = 0x87F4
+       PN_TRIANGLES_POINT_MODE_LINEAR_ATI              = 0x87F5
+       PN_TRIANGLES_POINT_MODE_CUBIC_ATI               = 0x87F6
+       PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI             = 0x87F7
+       PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI          = 0x87F8
+
+AMD_compressed_3DC_texture enum: (OpenGL ES only)
+       3DC_X_AMD                                       = 0x87F9
+       3DC_XY_AMD                                      = 0x87FA
+
+ATI_meminfo enum:
+       VBO_FREE_MEMORY_ATI                             = 0x87FB
+       TEXTURE_FREE_MEMORY_ATI                         = 0x87FC
+       RENDERBUFFER_FREE_MEMORY_ATI                    = 0x87FD
+
+OES_get_program_binary enum: (OpenGL ES only;
+       NUM_PROGRAM_BINARY_FORMATS_OES                  = 0x87FE
+       PROGRAM_BINARY_FORMATS_OES                      = 0x87FF
+
+VERSION_2_0 enum: (Promoted for OpenGL 2.0)
+       STENCIL_BACK_FUNC                               = 0x8800    # VERSION_2_0
+       STENCIL_BACK_FAIL                               = 0x8801    # VERSION_2_0
+       STENCIL_BACK_PASS_DEPTH_FAIL                    = 0x8802    # VERSION_2_0
+       STENCIL_BACK_PASS_DEPTH_PASS                    = 0x8803    # VERSION_2_0
+       STENCIL_BACK_FAIL_ATI                           = 0x8801
+
+ATI_separate_stencil enum:
+       STENCIL_BACK_FUNC_ATI                           = 0x8800
+       STENCIL_BACK_PASS_DEPTH_FAIL_ATI                = 0x8802
+       STENCIL_BACK_PASS_DEPTH_PASS_ATI                = 0x8803
+
+ARB_fragment_program enum:
+       FRAGMENT_PROGRAM_ARB                            = 0x8804
+       PROGRAM_ALU_INSTRUCTIONS_ARB                    = 0x8805
+       PROGRAM_TEX_INSTRUCTIONS_ARB                    = 0x8806
+       PROGRAM_TEX_INDIRECTIONS_ARB                    = 0x8807
+       PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB             = 0x8808
+       PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB             = 0x8809
+       PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB             = 0x880A
+       MAX_PROGRAM_ALU_INSTRUCTIONS_ARB                = 0x880B
+       MAX_PROGRAM_TEX_INSTRUCTIONS_ARB                = 0x880C
+       MAX_PROGRAM_TEX_INDIRECTIONS_ARB                = 0x880D
+       MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB         = 0x880E
+       MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB         = 0x880F
+       MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB         = 0x8810
+
+# ATI_future_use: 0x8811-0x8813
+
+VERSION_3_0 enum:
+       RGBA32F                                         = 0x8814    # VERSION_3_0
+       RGB32F                                          = 0x8815    # VERSION_3_0
+       RGBA16F                                         = 0x881A    # VERSION_3_0
+       RGB16F                                          = 0x881B    # VERSION_3_0
+
+ARB_texture_float enum:
+       RGBA32F_ARB                                     = 0x8814
+       RGB32F_ARB                                      = 0x8815
+       ALPHA32F_ARB                                    = 0x8816
+       INTENSITY32F_ARB                                = 0x8817
+       LUMINANCE32F_ARB                                = 0x8818
+       LUMINANCE_ALPHA32F_ARB                          = 0x8819
+       RGBA16F_ARB                                     = 0x881A
+       RGB16F_ARB                                      = 0x881B
+       ALPHA16F_ARB                                    = 0x881C
+       INTENSITY16F_ARB                                = 0x881D
+       LUMINANCE16F_ARB                                = 0x881E
+       LUMINANCE_ALPHA16F_ARB                          = 0x881F
+
+ATI_texture_float enum:
+       RGBA_FLOAT32_ATI                                = 0x8814
+       RGB_FLOAT32_ATI                                 = 0x8815
+       ALPHA_FLOAT32_ATI                               = 0x8816
+       INTENSITY_FLOAT32_ATI                           = 0x8817
+       LUMINANCE_FLOAT32_ATI                           = 0x8818
+       LUMINANCE_ALPHA_FLOAT32_ATI                     = 0x8819
+       RGBA_FLOAT16_ATI                                = 0x881A
+       RGB_FLOAT16_ATI                                 = 0x881B
+       ALPHA_FLOAT16_ATI                               = 0x881C
+       INTENSITY_FLOAT16_ATI                           = 0x881D
+       LUMINANCE_FLOAT16_ATI                           = 0x881E
+       LUMINANCE_ALPHA_FLOAT16_ATI                     = 0x881F
+
+APPLE_float_pixels enum: (additional; see below)
+       RGBA_FLOAT32_APPLE                              = 0x8814
+       RGB_FLOAT32_APPLE                               = 0x8815
+       ALPHA_FLOAT32_APPLE                             = 0x8816
+       INTENSITY_FLOAT32_APPLE                         = 0x8817
+       LUMINANCE_FLOAT32_APPLE                         = 0x8818
+       LUMINANCE_ALPHA_FLOAT32_APPLE                   = 0x8819
+       RGBA_FLOAT16_APPLE                              = 0x881A
+       RGB_FLOAT16_APPLE                               = 0x881B
+       ALPHA_FLOAT16_APPLE                             = 0x881C
+       INTENSITY_FLOAT16_APPLE                         = 0x881D
+       LUMINANCE_FLOAT16_APPLE                         = 0x881E
+       LUMINANCE_ALPHA_FLOAT16_APPLE                   = 0x881F
+
+ARB_color_buffer_float enum:
+       RGBA_FLOAT_MODE_ARB                             = 0x8820    # Equivalent to TYPE_RGBA_FLOAT_ATI
+
+ATI_pixel_format_float enum: (really WGL_ATI_pixel_format_float)
+       TYPE_RGBA_FLOAT_ATI                             = 0x8820
+
+# ATI_future_use: 0x8821-0x8822
+
+QCOM_writeonly_rendering enum: (OpenGL ES only)
+       WRITEONLY_RENDERING_QCOM                        = 0x8823
+
+VERSION_2_0 enum: (Promoted for OpenGL 2.0)
+       MAX_DRAW_BUFFERS                                = 0x8824    # VERSION_2_0
+       DRAW_BUFFER0                                    = 0x8825    # VERSION_2_0
+       DRAW_BUFFER1                                    = 0x8826    # VERSION_2_0
+       DRAW_BUFFER2                                    = 0x8827    # VERSION_2_0
+       DRAW_BUFFER3                                    = 0x8828    # VERSION_2_0
+       DRAW_BUFFER4                                    = 0x8829    # VERSION_2_0
+       DRAW_BUFFER5                                    = 0x882A    # VERSION_2_0
+       DRAW_BUFFER6                                    = 0x882B    # VERSION_2_0
+       DRAW_BUFFER7                                    = 0x882C    # VERSION_2_0
+       DRAW_BUFFER8                                    = 0x882D    # VERSION_2_0
+       DRAW_BUFFER9                                    = 0x882E    # VERSION_2_0
+       DRAW_BUFFER10                                   = 0x882F    # VERSION_2_0
+       DRAW_BUFFER11                                   = 0x8830    # VERSION_2_0
+       DRAW_BUFFER12                                   = 0x8831    # VERSION_2_0
+       DRAW_BUFFER13                                   = 0x8832    # VERSION_2_0
+       DRAW_BUFFER14                                   = 0x8833    # VERSION_2_0
+       DRAW_BUFFER15                                   = 0x8834    # VERSION_2_0
+
+ARB_draw_buffers enum:
+       MAX_DRAW_BUFFERS_ARB                            = 0x8824
+       DRAW_BUFFER0_ARB                                = 0x8825
+       DRAW_BUFFER1_ARB                                = 0x8826
+       DRAW_BUFFER2_ARB                                = 0x8827
+       DRAW_BUFFER3_ARB                                = 0x8828
+       DRAW_BUFFER4_ARB                                = 0x8829
+       DRAW_BUFFER5_ARB                                = 0x882A
+       DRAW_BUFFER6_ARB                                = 0x882B
+       DRAW_BUFFER7_ARB                                = 0x882C
+       DRAW_BUFFER8_ARB                                = 0x882D
+       DRAW_BUFFER9_ARB                                = 0x882E
+       DRAW_BUFFER10_ARB                               = 0x882F
+       DRAW_BUFFER11_ARB                               = 0x8830
+       DRAW_BUFFER12_ARB                               = 0x8831
+       DRAW_BUFFER13_ARB                               = 0x8832
+       DRAW_BUFFER14_ARB                               = 0x8833
+       DRAW_BUFFER15_ARB                               = 0x8834
+
+ATI_draw_buffers enum:
+       MAX_DRAW_BUFFERS_ATI                            = 0x8824
+       DRAW_BUFFER0_ATI                                = 0x8825
+       DRAW_BUFFER1_ATI                                = 0x8826
+       DRAW_BUFFER2_ATI                                = 0x8827
+       DRAW_BUFFER3_ATI                                = 0x8828
+       DRAW_BUFFER4_ATI                                = 0x8829
+       DRAW_BUFFER5_ATI                                = 0x882A
+       DRAW_BUFFER6_ATI                                = 0x882B
+       DRAW_BUFFER7_ATI                                = 0x882C
+       DRAW_BUFFER8_ATI                                = 0x882D
+       DRAW_BUFFER9_ATI                                = 0x882E
+       DRAW_BUFFER10_ATI                               = 0x882F
+       DRAW_BUFFER11_ATI                               = 0x8830
+       DRAW_BUFFER12_ATI                               = 0x8831
+       DRAW_BUFFER13_ATI                               = 0x8832
+       DRAW_BUFFER14_ATI                               = 0x8833
+       DRAW_BUFFER15_ATI                               = 0x8834
+
+ATI_pixel_format_float enum: (really WGL_ATI_pixel_format_float) (additional; see above)
+       COLOR_CLEAR_UNCLAMPED_VALUE_ATI                 = 0x8835
+
+# ATI_future_use: 0x8836-0x883F
+
+VERSION_2_0 enum: (Promoted for OpenGL 2.0)
+       BLEND_EQUATION_ALPHA                            = 0x883D    # VERSION_2_0
+
+EXT_blend_equation_separate enum:
+       BLEND_EQUATION_ALPHA_EXT                        = 0x883D
+
+# Aliases EXT_blend_equation_separate enum above
+OES_blend_equation_separate enum: (OpenGL ES only)
+       BLEND_EQUATION_ALPHA_OES                        = 0x883D
+
+###############################################################################
+
+# OpenGL ARB: 0x8840-0x884F
+
+ARB_matrix_palette enum:
+       MATRIX_PALETTE_ARB                              = 0x8840
+       MAX_MATRIX_PALETTE_STACK_DEPTH_ARB              = 0x8841
+       MAX_PALETTE_MATRICES_ARB                        = 0x8842
+       CURRENT_PALETTE_MATRIX_ARB                      = 0x8843
+       MATRIX_INDEX_ARRAY_ARB                          = 0x8844
+       CURRENT_MATRIX_INDEX_ARB                        = 0x8845
+       MATRIX_INDEX_ARRAY_SIZE_ARB                     = 0x8846
+       MATRIX_INDEX_ARRAY_TYPE_ARB                     = 0x8847
+       MATRIX_INDEX_ARRAY_STRIDE_ARB                   = 0x8848
+       MATRIX_INDEX_ARRAY_POINTER_ARB                  = 0x8849
+
+# Aliases ARB_matrix_palette enums above
+OES_matrix_palette enum: (OpenGL ES only; additional; see below)
+       MATRIX_PALETTE_OES                              = 0x8840
+       MAX_PALETTE_MATRICES_OES                        = 0x8842
+       CURRENT_PALETTE_MATRIX_OES                      = 0x8843
+       MATRIX_INDEX_ARRAY_OES                          = 0x8844
+       MATRIX_INDEX_ARRAY_SIZE_OES                     = 0x8846
+       MATRIX_INDEX_ARRAY_TYPE_OES                     = 0x8847
+       MATRIX_INDEX_ARRAY_STRIDE_OES                   = 0x8848
+       MATRIX_INDEX_ARRAY_POINTER_OES                  = 0x8849
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       TEXTURE_DEPTH_SIZE                              = 0x884A
+       DEPTH_TEXTURE_MODE                              = 0x884B
+
+ARB_depth_texture enum:
+       TEXTURE_DEPTH_SIZE_ARB                          = 0x884A
+       DEPTH_TEXTURE_MODE_ARB                          = 0x884B
+
+VERSION_3_0 enum: (aliases)
+       COMPARE_REF_TO_TEXTURE                          = 0x884E    # VERSION_3_0   # alias GL_COMPARE_R_TO_TEXTURE_ARB
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+       TEXTURE_COMPARE_MODE                            = 0x884C
+       TEXTURE_COMPARE_FUNC                            = 0x884D
+       COMPARE_R_TO_TEXTURE                            = 0x884E
+
+ARB_shadow enum:
+       TEXTURE_COMPARE_MODE_ARB                        = 0x884C
+       TEXTURE_COMPARE_FUNC_ARB                        = 0x884D
+       COMPARE_R_TO_TEXTURE_ARB                        = 0x884E
+
+EXT_texture_array enum: (additional; see below)
+       COMPARE_REF_DEPTH_TO_TEXTURE_EXT                = 0x884E
+
+VERSION_3_2 enum:
+       use ARB_seamless_cube_map           TEXTURE_CUBE_MAP_SEAMLESS
+
+ARB_seamless_cube_map enum:
+       TEXTURE_CUBE_MAP_SEAMLESS                       = 0x884F
+
+###############################################################################
+
+# NVIDIA: 0x8850-0x891F
+
+NV_texture_shader3 enum:
+       OFFSET_PROJECTIVE_TEXTURE_2D_NV                 = 0x8850
+       OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV           = 0x8851
+       OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV          = 0x8852
+       OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV    = 0x8853
+       OFFSET_HILO_TEXTURE_2D_NV                       = 0x8854
+       OFFSET_HILO_TEXTURE_RECTANGLE_NV                = 0x8855
+       OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV            = 0x8856
+       OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV     = 0x8857
+       DEPENDENT_HILO_TEXTURE_2D_NV                    = 0x8858
+       DEPENDENT_RGB_TEXTURE_3D_NV                     = 0x8859
+       DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV               = 0x885A
+       DOT_PRODUCT_PASS_THROUGH_NV                     = 0x885B
+       DOT_PRODUCT_TEXTURE_1D_NV                       = 0x885C
+       DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV             = 0x885D
+       HILO8_NV                                        = 0x885E
+       SIGNED_HILO8_NV                                 = 0x885F
+       FORCE_BLUE_TO_ONE_NV                            = 0x8860
+
+VERSION_2_0 enum: (Promoted for OpenGL 2.0)
+       POINT_SPRITE                                    = 0x8861    # VERSION_2_0
+       COORD_REPLACE                                   = 0x8862    # VERSION_2_0
+
+ARB_point_sprite enum:
+       POINT_SPRITE_ARB                                = 0x8861
+       COORD_REPLACE_ARB                               = 0x8862
+
+NV_point_sprite enum:
+       POINT_SPRITE_NV                                 = 0x8861
+       COORD_REPLACE_NV                                = 0x8862
+
+# Aliases ARB_point_sprite enums above
+OES_point_sprite enum: (OpenGL ES only)
+       POINT_SPRITE_ARB                                = 0x8861
+       COORD_REPLACE_ARB                               = 0x8862
+
+NV_point_sprite enum:
+       POINT_SPRITE_R_MODE_NV                          = 0x8863
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+       QUERY_COUNTER_BITS                              = 0x8864
+       CURRENT_QUERY                                   = 0x8865
+       QUERY_RESULT                                    = 0x8866
+       QUERY_RESULT_AVAILABLE                          = 0x8867
+
+ARB_occlusion_query enum:
+       QUERY_COUNTER_BITS_ARB                          = 0x8864
+       CURRENT_QUERY_ARB                               = 0x8865
+       QUERY_RESULT_ARB                                = 0x8866
+       QUERY_RESULT_AVAILABLE_ARB                      = 0x8867
+
+NV_occlusion_query enum:
+       PIXEL_COUNTER_BITS_NV                           = 0x8864
+       CURRENT_OCCLUSION_QUERY_ID_NV                   = 0x8865
+       PIXEL_COUNT_NV                                  = 0x8866
+       PIXEL_COUNT_AVAILABLE_NV                        = 0x8867
+
+NV_fragment_program enum:
+       MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV        = 0x8868
+
+VERSION_2_0 enum: (Promoted from ARB_vertex_shader)
+       MAX_VERTEX_ATTRIBS                              = 0x8869    # VERSION_2_0
+       VERTEX_ATTRIB_ARRAY_NORMALIZED                  = 0x886A    # VERSION_2_0
+
+ARB_vertex_program enum: (additional; see above)
+       MAX_VERTEX_ATTRIBS_ARB                          = 0x8869
+       VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB              = 0x886A
+
+# NV_future_use: 0x886B-0x886D
+
+NV_copy_depth_to_color enum:
+       DEPTH_STENCIL_TO_RGBA_NV                        = 0x886E
+       DEPTH_STENCIL_TO_BGRA_NV                        = 0x886F
+
+NV_fragment_program enum: (additional; see above)
+       FRAGMENT_PROGRAM_NV                             = 0x8870
+       MAX_TEXTURE_COORDS_NV                           = 0x8871
+       MAX_TEXTURE_IMAGE_UNITS_NV                      = 0x8872
+       FRAGMENT_PROGRAM_BINDING_NV                     = 0x8873
+       PROGRAM_ERROR_STRING_NV                         = 0x8874
+
+VERSION_2_0 enum: (Promoted from ARB_fragment_shader; only some values)
+       MAX_TEXTURE_COORDS                              = 0x8871    # VERSION_2_0
+       MAX_TEXTURE_IMAGE_UNITS                         = 0x8872    # VERSION_2_0
+
+ARB_vertex_program enum: (additional; see above)
+ARB_fragment_program enum: (additional; see above)
+       MAX_TEXTURE_COORDS_ARB                          = 0x8871    # ARB_fragment_program
+       MAX_TEXTURE_IMAGE_UNITS_ARB                     = 0x8872    # ARB_fragment_program
+       PROGRAM_ERROR_STRING_ARB                        = 0x8874    # ARB_vertex_program / ARB_fragment_program
+       PROGRAM_FORMAT_ASCII_ARB                        = 0x8875    # ARB_vertex_program / ARB_fragment_program
+       PROGRAM_FORMAT_ARB                              = 0x8876    # ARB_vertex_program / ARB_fragment_program
+
+# 0x8877 *should have been* assigned to PROGRAM_BINDING_ARB. Oops.
+
+NV_pixel_data_range enum:
+       WRITE_PIXEL_DATA_RANGE_NV                       = 0x8878
+       READ_PIXEL_DATA_RANGE_NV                        = 0x8879
+       WRITE_PIXEL_DATA_RANGE_LENGTH_NV                = 0x887A
+       READ_PIXEL_DATA_RANGE_LENGTH_NV                 = 0x887B
+       WRITE_PIXEL_DATA_RANGE_POINTER_NV               = 0x887C
+       READ_PIXEL_DATA_RANGE_POINTER_NV                = 0x887D
+
+# NV_future_use: 0x887E-0x887F
+
+NV_float_buffer enum:
+       FLOAT_R_NV                                      = 0x8880
+       FLOAT_RG_NV                                     = 0x8881
+       FLOAT_RGB_NV                                    = 0x8882
+       FLOAT_RGBA_NV                                   = 0x8883
+       FLOAT_R16_NV                                    = 0x8884
+       FLOAT_R32_NV                                    = 0x8885
+       FLOAT_RG16_NV                                   = 0x8886
+       FLOAT_RG32_NV                                   = 0x8887
+       FLOAT_RGB16_NV                                  = 0x8888
+       FLOAT_RGB32_NV                                  = 0x8889
+       FLOAT_RGBA16_NV                                 = 0x888A
+       FLOAT_RGBA32_NV                                 = 0x888B
+       TEXTURE_FLOAT_COMPONENTS_NV                     = 0x888C
+       FLOAT_CLEAR_COLOR_VALUE_NV                      = 0x888D
+       FLOAT_RGBA_MODE_NV                              = 0x888E
+
+NV_texture_expand_normal enum:
+       TEXTURE_UNSIGNED_REMAP_MODE_NV                  = 0x888F
+
+EXT_depth_bounds_test enum:
+       DEPTH_BOUNDS_TEST_EXT                           = 0x8890
+       DEPTH_BOUNDS_EXT                                = 0x8891
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+       ARRAY_BUFFER                                    = 0x8892
+       ELEMENT_ARRAY_BUFFER                            = 0x8893
+       ARRAY_BUFFER_BINDING                            = 0x8894
+       ELEMENT_ARRAY_BUFFER_BINDING                    = 0x8895
+       VERTEX_ARRAY_BUFFER_BINDING                     = 0x8896
+       NORMAL_ARRAY_BUFFER_BINDING                     = 0x8897
+       COLOR_ARRAY_BUFFER_BINDING                      = 0x8898
+       INDEX_ARRAY_BUFFER_BINDING                      = 0x8899
+       TEXTURE_COORD_ARRAY_BUFFER_BINDING              = 0x889A
+       EDGE_FLAG_ARRAY_BUFFER_BINDING                  = 0x889B
+       SECONDARY_COLOR_ARRAY_BUFFER_BINDING            = 0x889C
+       FOG_COORD_ARRAY_BUFFER_BINDING                  = 0x889D    # alias GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+       FOG_COORDINATE_ARRAY_BUFFER_BINDING             = 0x889D
+       WEIGHT_ARRAY_BUFFER_BINDING                     = 0x889E
+       VERTEX_ATTRIB_ARRAY_BUFFER_BINDING              = 0x889F
+
+ARB_vertex_buffer_object enum:
+       ARRAY_BUFFER_ARB                                = 0x8892
+       ELEMENT_ARRAY_BUFFER_ARB                        = 0x8893
+       ARRAY_BUFFER_BINDING_ARB                        = 0x8894
+       ELEMENT_ARRAY_BUFFER_BINDING_ARB                = 0x8895
+       VERTEX_ARRAY_BUFFER_BINDING_ARB                 = 0x8896
+       NORMAL_ARRAY_BUFFER_BINDING_ARB                 = 0x8897
+       COLOR_ARRAY_BUFFER_BINDING_ARB                  = 0x8898
+       INDEX_ARRAY_BUFFER_BINDING_ARB                  = 0x8899
+       TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB          = 0x889A
+       EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB              = 0x889B
+       SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB        = 0x889C
+       FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB         = 0x889D
+       WEIGHT_ARRAY_BUFFER_BINDING_ARB                 = 0x889E
+       VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB          = 0x889F
+
+# Aliases ARB_vertex_buffer_object enum above
+OES_matrix_palette enum: (OpenGL ES only; additional; see below)
+       WEIGHT_ARRAY_BUFFER_BINDING_OES                 = 0x889E
+
+ARB_vertex_program enum: (additional; see above)
+ARB_fragment_program enum: (additional; see above)
+       PROGRAM_INSTRUCTIONS_ARB                        = 0x88A0
+       MAX_PROGRAM_INSTRUCTIONS_ARB                    = 0x88A1
+       PROGRAM_NATIVE_INSTRUCTIONS_ARB                 = 0x88A2
+       MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB             = 0x88A3
+       PROGRAM_TEMPORARIES_ARB                         = 0x88A4
+       MAX_PROGRAM_TEMPORARIES_ARB                     = 0x88A5
+       PROGRAM_NATIVE_TEMPORARIES_ARB                  = 0x88A6
+       MAX_PROGRAM_NATIVE_TEMPORARIES_ARB              = 0x88A7
+       PROGRAM_PARAMETERS_ARB                          = 0x88A8
+       MAX_PROGRAM_PARAMETERS_ARB                      = 0x88A9
+       PROGRAM_NATIVE_PARAMETERS_ARB                   = 0x88AA
+       MAX_PROGRAM_NATIVE_PARAMETERS_ARB               = 0x88AB
+       PROGRAM_ATTRIBS_ARB                             = 0x88AC
+       MAX_PROGRAM_ATTRIBS_ARB                         = 0x88AD
+       PROGRAM_NATIVE_ATTRIBS_ARB                      = 0x88AE
+       MAX_PROGRAM_NATIVE_ATTRIBS_ARB                  = 0x88AF
+       PROGRAM_ADDRESS_REGISTERS_ARB                   = 0x88B0
+       MAX_PROGRAM_ADDRESS_REGISTERS_ARB               = 0x88B1
+       PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB            = 0x88B2
+       MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB        = 0x88B3
+       MAX_PROGRAM_LOCAL_PARAMETERS_ARB                = 0x88B4
+       MAX_PROGRAM_ENV_PARAMETERS_ARB                  = 0x88B5
+       PROGRAM_UNDER_NATIVE_LIMITS_ARB                 = 0x88B6
+       TRANSPOSE_CURRENT_MATRIX_ARB                    = 0x88B7
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+       READ_ONLY                                       = 0x88B8
+       WRITE_ONLY                                      = 0x88B9
+       READ_WRITE                                      = 0x88BA
+       BUFFER_ACCESS                                   = 0x88BB
+       BUFFER_MAPPED                                   = 0x88BC
+       BUFFER_MAP_POINTER                              = 0x88BD
+
+ARB_vertex_buffer_object enum: (additional; see above)
+       READ_ONLY_ARB                                   = 0x88B8
+       WRITE_ONLY_ARB                                  = 0x88B9
+       READ_WRITE_ARB                                  = 0x88BA
+       BUFFER_ACCESS_ARB                               = 0x88BB
+       BUFFER_MAPPED_ARB                               = 0x88BC
+       BUFFER_MAP_POINTER_ARB                          = 0x88BD
+
+# Aliases ARB_vertex_buffer_object enums above
+OES_mapbuffer enum: (OpenGL ES only)
+       WRITE_ONLY_OES                                  = 0x88B9
+       BUFFER_ACCESS_OES                               = 0x88BB
+       BUFFER_MAPPED_OES                               = 0x88BC
+       BUFFER_MAP_POINTER_OES                          = 0x88BD
+
+# NV_future_use: 0x88BE
+
+EXT_timer_query enum:
+       TIME_ELAPSED_EXT                                = 0x88BF
+
+ARB_vertex_program enum: (additional; see above)
+ARB_fragment_program enum: (additional; see above)
+       MATRIX0_ARB                                     = 0x88C0
+       MATRIX1_ARB                                     = 0x88C1
+       MATRIX2_ARB                                     = 0x88C2
+       MATRIX3_ARB                                     = 0x88C3
+       MATRIX4_ARB                                     = 0x88C4
+       MATRIX5_ARB                                     = 0x88C5
+       MATRIX6_ARB                                     = 0x88C6
+       MATRIX7_ARB                                     = 0x88C7
+       MATRIX8_ARB                                     = 0x88C8
+       MATRIX9_ARB                                     = 0x88C9
+       MATRIX10_ARB                                    = 0x88CA
+       MATRIX11_ARB                                    = 0x88CB
+       MATRIX12_ARB                                    = 0x88CC
+       MATRIX13_ARB                                    = 0x88CD
+       MATRIX14_ARB                                    = 0x88CE
+       MATRIX15_ARB                                    = 0x88CF
+       MATRIX16_ARB                                    = 0x88D0
+       MATRIX17_ARB                                    = 0x88D1
+       MATRIX18_ARB                                    = 0x88D2
+       MATRIX19_ARB                                    = 0x88D3
+       MATRIX20_ARB                                    = 0x88D4
+       MATRIX21_ARB                                    = 0x88D5
+       MATRIX22_ARB                                    = 0x88D6
+       MATRIX23_ARB                                    = 0x88D7
+       MATRIX24_ARB                                    = 0x88D8
+       MATRIX25_ARB                                    = 0x88D9
+       MATRIX26_ARB                                    = 0x88DA
+       MATRIX27_ARB                                    = 0x88DB
+       MATRIX28_ARB                                    = 0x88DC
+       MATRIX29_ARB                                    = 0x88DD
+       MATRIX30_ARB                                    = 0x88DE
+       MATRIX31_ARB                                    = 0x88DF
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+       STREAM_DRAW                                     = 0x88E0
+       STREAM_READ                                     = 0x88E1
+       STREAM_COPY                                     = 0x88E2
+       STATIC_DRAW                                     = 0x88E4
+       STATIC_READ                                     = 0x88E5
+       STATIC_COPY                                     = 0x88E6
+       DYNAMIC_DRAW                                    = 0x88E8
+       DYNAMIC_READ                                    = 0x88E9
+       DYNAMIC_COPY                                    = 0x88EA
+
+ARB_vertex_buffer_object enum: (additional; see above)
+       STREAM_DRAW_ARB                                 = 0x88E0
+       STREAM_READ_ARB                                 = 0x88E1
+       STREAM_COPY_ARB                                 = 0x88E2
+       STATIC_DRAW_ARB                                 = 0x88E4
+       STATIC_READ_ARB                                 = 0x88E5
+       STATIC_COPY_ARB                                 = 0x88E6
+       DYNAMIC_DRAW_ARB                                = 0x88E8
+       DYNAMIC_READ_ARB                                = 0x88E9
+       DYNAMIC_COPY_ARB                                = 0x88EA
+
+VERSION_2_1 enum:
+       PIXEL_PACK_BUFFER                               = 0x88EB    # VERSION_2_1
+       PIXEL_UNPACK_BUFFER                             = 0x88EC    # VERSION_2_1
+       PIXEL_PACK_BUFFER_BINDING                       = 0x88ED    # VERSION_2_1
+       PIXEL_UNPACK_BUFFER_BINDING                     = 0x88EF    # VERSION_2_1
+
+ARB_pixel_buffer_object enum:
+       PIXEL_PACK_BUFFER_ARB                           = 0x88EB    # ARB_pixel_buffer_object
+       PIXEL_UNPACK_BUFFER_ARB                         = 0x88EC    # ARB_pixel_buffer_object
+       PIXEL_PACK_BUFFER_BINDING_ARB                   = 0x88ED    # ARB_pixel_buffer_object
+       PIXEL_UNPACK_BUFFER_BINDING_ARB                 = 0x88EF    # ARB_pixel_buffer_object
+
+EXT_pixel_buffer_object enum:
+       PIXEL_PACK_BUFFER_EXT                           = 0x88EB    # EXT_pixel_buffer_object
+       PIXEL_UNPACK_BUFFER_EXT                         = 0x88EC    # EXT_pixel_buffer_object
+       PIXEL_PACK_BUFFER_BINDING_EXT                   = 0x88ED    # EXT_pixel_buffer_object
+       PIXEL_UNPACK_BUFFER_BINDING_EXT                 = 0x88EF    # EXT_pixel_buffer_object
+
+# ARB_future_use: 0x88E3, 0x88E7, 0x88EE
+# (for extending ARB_vertex_buffer_object):
+
+VERSION_3_0 enum:
+       use ARB_framebuffer_object          DEPTH24_STENCIL8
+       use ARB_framebuffer_object          TEXTURE_STENCIL_SIZE
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+       DEPTH24_STENCIL8                                = 0x88F0    # VERSION_3_0 / ARB_fbo
+       TEXTURE_STENCIL_SIZE                            = 0x88F1    # VERSION_3_0 / ARB_fbo
+
+EXT_packed_depth_stencil enum: (additional; see above)
+       DEPTH24_STENCIL8_EXT                            = 0x88F0
+       TEXTURE_STENCIL_SIZE_EXT                        = 0x88F1
+
+# Aliases EXT_packed_depth_stencil enum above
+OES_packed_depth_stencil enum: (OpenGL ES only; additional; see above)
+       DEPTH24_STENCIL8_OES                            = 0x88F0
+
+EXT_stencil_clear_tag enum:
+       STENCIL_TAG_BITS_EXT                            = 0x88F2
+       STENCIL_CLEAR_TAG_VALUE_EXT                     = 0x88F3
+
+NV_vertex_program2_option enum: (duplicated in NV_fragment_prgoram2 below)
+       MAX_PROGRAM_EXEC_INSTRUCTIONS_NV                = 0x88F4
+       MAX_PROGRAM_CALL_DEPTH_NV                       = 0x88F5
+
+NV_fragment_program2 enum:
+       MAX_PROGRAM_EXEC_INSTRUCTIONS_NV                = 0x88F4
+       MAX_PROGRAM_CALL_DEPTH_NV                       = 0x88F5
+       MAX_PROGRAM_IF_DEPTH_NV                         = 0x88F6
+       MAX_PROGRAM_LOOP_DEPTH_NV                       = 0x88F7
+       MAX_PROGRAM_LOOP_COUNT_NV                       = 0x88F8
+
+# NV_future_use: 0x88F9-0x88FC
+
+VERSION_3_0 enum:
+       VERTEX_ATTRIB_ARRAY_INTEGER                     = 0x88FD    # VERSION_3_0
+
+NV_vertex_program4 enum:
+       VERTEX_ATTRIB_ARRAY_INTEGER_NV                  = 0x88FD
+
+ARB_instanced_arrays enum:
+       VERTEX_ATTRIB_ARRAY_DIVISOR_ARB                 = 0x88FE
+
+VERSION_3_0 enum:
+       MAX_ARRAY_TEXTURE_LAYERS                        = 0x88FF    # VERSION_3_0
+
+EXT_texture_array enum: (additional; see below)
+       MAX_ARRAY_TEXTURE_LAYERS_EXT                    = 0x88FF
+
+VERSION_3_0 enum:
+       MIN_PROGRAM_TEXEL_OFFSET                        = 0x8904    # VERSION_3_0
+       MAX_PROGRAM_TEXEL_OFFSET                        = 0x8905    # VERSION_3_0
+
+NV_gpu_program4 enum:
+       MIN_PROGRAM_TEXEL_OFFSET_NV                     = 0x8904
+       MAX_PROGRAM_TEXEL_OFFSET_NV                     = 0x8905
+       PROGRAM_ATTRIB_COMPONENTS_NV                    = 0x8906
+       PROGRAM_RESULT_COMPONENTS_NV                    = 0x8907
+       MAX_PROGRAM_ATTRIB_COMPONENTS_NV                = 0x8908
+       MAX_PROGRAM_RESULT_COMPONENTS_NV                = 0x8909
+
+EXT_stencil_two_side enum:
+       STENCIL_TEST_TWO_SIDE_EXT                       = 0x8910
+       ACTIVE_STENCIL_FACE_EXT                         = 0x8911
+
+EXT_texture_mirror_clamp enum: (additional; see above):
+       MIRROR_CLAMP_TO_BORDER_EXT                      = 0x8912
+
+# NV_future_use: 0x8913
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+       SAMPLES_PASSED                                  = 0x8914
+
+ARB_occlusion_query enum: (additional; see above)
+       SAMPLES_PASSED_ARB                              = 0x8914
+
+# NV_future_use: 0x8915
+
+VERSION_3_2 enum:
+       GEOMETRY_VERTICES_OUT                           = 0x8916
+       GEOMETRY_INPUT_TYPE                             = 0x8917
+       GEOMETRY_OUTPUT_TYPE                            = 0x8918
+
+# NV_future_use: 0x8919
+
+VERSION_3_0 enum:
+       CLAMP_VERTEX_COLOR                              = 0x891A    # VERSION_3_0
+       CLAMP_FRAGMENT_COLOR                            = 0x891B    # VERSION_3_0
+       CLAMP_READ_COLOR                                = 0x891C    # VERSION_3_0
+       FIXED_ONLY                                      = 0x891D    # VERSION_3_0
+
+ARB_color_buffer_float enum: (additional; see above)
+       CLAMP_VERTEX_COLOR_ARB                          = 0x891A
+       CLAMP_FRAGMENT_COLOR_ARB                        = 0x891B
+       CLAMP_READ_COLOR_ARB                            = 0x891C
+       FIXED_ONLY_ARB                                  = 0x891D
+
+# NV_future_use: 0x891E-0x891F
+
+###############################################################################
+
+# ATI: 0x8920-0x897F
+
+ATI_fragment_shader enum:
+       FRAGMENT_SHADER_ATI                             = 0x8920
+       REG_0_ATI                                       = 0x8921
+       REG_1_ATI                                       = 0x8922
+       REG_2_ATI                                       = 0x8923
+       REG_3_ATI                                       = 0x8924
+       REG_4_ATI                                       = 0x8925
+       REG_5_ATI                                       = 0x8926
+       REG_6_ATI                                       = 0x8927
+       REG_7_ATI                                       = 0x8928
+       REG_8_ATI                                       = 0x8929
+       REG_9_ATI                                       = 0x892A
+       REG_10_ATI                                      = 0x892B
+       REG_11_ATI                                      = 0x892C
+       REG_12_ATI                                      = 0x892D
+       REG_13_ATI                                      = 0x892E
+       REG_14_ATI                                      = 0x892F
+       REG_15_ATI                                      = 0x8930
+       REG_16_ATI                                      = 0x8931
+       REG_17_ATI                                      = 0x8932
+       REG_18_ATI                                      = 0x8933
+       REG_19_ATI                                      = 0x8934
+       REG_20_ATI                                      = 0x8935
+       REG_21_ATI                                      = 0x8936
+       REG_22_ATI                                      = 0x8937
+       REG_23_ATI                                      = 0x8938
+       REG_24_ATI                                      = 0x8939
+       REG_25_ATI                                      = 0x893A
+       REG_26_ATI                                      = 0x893B
+       REG_27_ATI                                      = 0x893C
+       REG_28_ATI                                      = 0x893D
+       REG_29_ATI                                      = 0x893E
+       REG_30_ATI                                      = 0x893F
+       REG_31_ATI                                      = 0x8940
+       CON_0_ATI                                       = 0x8941
+       CON_1_ATI                                       = 0x8942
+       CON_2_ATI                                       = 0x8943
+       CON_3_ATI                                       = 0x8944
+       CON_4_ATI                                       = 0x8945
+       CON_5_ATI                                       = 0x8946
+       CON_6_ATI                                       = 0x8947
+       CON_7_ATI                                       = 0x8948
+       CON_8_ATI                                       = 0x8949
+       CON_9_ATI                                       = 0x894A
+       CON_10_ATI                                      = 0x894B
+       CON_11_ATI                                      = 0x894C
+       CON_12_ATI                                      = 0x894D
+       CON_13_ATI                                      = 0x894E
+       CON_14_ATI                                      = 0x894F
+       CON_15_ATI                                      = 0x8950
+       CON_16_ATI                                      = 0x8951
+       CON_17_ATI                                      = 0x8952
+       CON_18_ATI                                      = 0x8953
+       CON_19_ATI                                      = 0x8954
+       CON_20_ATI                                      = 0x8955
+       CON_21_ATI                                      = 0x8956
+       CON_22_ATI                                      = 0x8957
+       CON_23_ATI                                      = 0x8958
+       CON_24_ATI                                      = 0x8959
+       CON_25_ATI                                      = 0x895A
+       CON_26_ATI                                      = 0x895B
+       CON_27_ATI                                      = 0x895C
+       CON_28_ATI                                      = 0x895D
+       CON_29_ATI                                      = 0x895E
+       CON_30_ATI                                      = 0x895F
+       CON_31_ATI                                      = 0x8960
+       MOV_ATI                                         = 0x8961
+       ADD_ATI                                         = 0x8963
+       MUL_ATI                                         = 0x8964
+       SUB_ATI                                         = 0x8965
+       DOT3_ATI                                        = 0x8966
+       DOT4_ATI                                        = 0x8967
+       MAD_ATI                                         = 0x8968
+       LERP_ATI                                        = 0x8969
+       CND_ATI                                         = 0x896A
+       CND0_ATI                                        = 0x896B
+       DOT2_ADD_ATI                                    = 0x896C
+       SECONDARY_INTERPOLATOR_ATI                      = 0x896D
+       NUM_FRAGMENT_REGISTERS_ATI                      = 0x896E
+       NUM_FRAGMENT_CONSTANTS_ATI                      = 0x896F
+       NUM_PASSES_ATI                                  = 0x8970
+       NUM_INSTRUCTIONS_PER_PASS_ATI                   = 0x8971
+       NUM_INSTRUCTIONS_TOTAL_ATI                      = 0x8972
+       NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI           = 0x8973
+       NUM_LOOPBACK_COMPONENTS_ATI                     = 0x8974
+       COLOR_ALPHA_PAIRING_ATI                         = 0x8975
+       SWIZZLE_STR_ATI                                 = 0x8976
+       SWIZZLE_STQ_ATI                                 = 0x8977
+       SWIZZLE_STR_DR_ATI                              = 0x8978
+       SWIZZLE_STQ_DQ_ATI                              = 0x8979
+       SWIZZLE_STRQ_ATI                                = 0x897A
+       SWIZZLE_STRQ_DQ_ATI                             = 0x897B
+# ??? Not clear where to put new types of mask bits yet
+       RED_BIT_ATI                                     = 0x00000001
+       GREEN_BIT_ATI                                   = 0x00000002
+       BLUE_BIT_ATI                                    = 0x00000004
+       2X_BIT_ATI                                      = 0x00000001
+       4X_BIT_ATI                                      = 0x00000002
+       8X_BIT_ATI                                      = 0x00000004
+       HALF_BIT_ATI                                    = 0x00000008
+       QUARTER_BIT_ATI                                 = 0x00000010
+       EIGHTH_BIT_ATI                                  = 0x00000020
+       SATURATE_BIT_ATI                                = 0x00000040
+       2X_BIT_ATI                                      = 0x00000001
+       COMP_BIT_ATI                                    = 0x00000002
+       NEGATE_BIT_ATI                                  = 0x00000004
+       BIAS_BIT_ATI                                    = 0x00000008
+
+# ATI_future_use: 0x897C-0x897F
+
+###############################################################################
+
+# Khronos OpenML WG / OpenGL ES WG: 0x8980-0x898F
+
+OML_interlace enum:
+       INTERLACE_OML                                   = 0x8980
+       INTERLACE_READ_OML                              = 0x8981
+
+OML_subsample enum:
+       FORMAT_SUBSAMPLE_24_24_OML                      = 0x8982
+       FORMAT_SUBSAMPLE_244_244_OML                    = 0x8983
+
+OML_resample enum:
+       PACK_RESAMPLE_OML                               = 0x8984
+       UNPACK_RESAMPLE_OML                             = 0x8985
+       RESAMPLE_REPLICATE_OML                          = 0x8986
+       RESAMPLE_ZERO_FILL_OML                          = 0x8987
+       RESAMPLE_AVERAGE_OML                            = 0x8988
+       RESAMPLE_DECIMATE_OML                           = 0x8989
+
+OES_point_size_array enum: (OpenGL ES only)
+       POINT_SIZE_ARRAY_TYPE_OES                       = 0x898A
+       POINT_SIZE_ARRAY_STRIDE_OES                     = 0x898B
+       POINT_SIZE_ARRAY_POINTER_OES                    = 0x898C
+
+OES_matrix_get enum: (OpenGL ES only)
+       MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES          = 0x898D
+       PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES         = 0x898E
+       TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES            = 0x898F
+
+###############################################################################
+
+# 3dlabs: 0x8990-0x899F
+
+###############################################################################
+
+# Matrox: 0x89A0-0x89FF
+
+###############################################################################
+
+# Apple: 0x8A00-0x8A7F
+
+APPLE_vertex_program_evaluators enum:
+       VERTEX_ATTRIB_MAP1_APPLE                        = 0x8A00
+       VERTEX_ATTRIB_MAP2_APPLE                        = 0x8A01
+       VERTEX_ATTRIB_MAP1_SIZE_APPLE                   = 0x8A02
+       VERTEX_ATTRIB_MAP1_COEFF_APPLE                  = 0x8A03
+       VERTEX_ATTRIB_MAP1_ORDER_APPLE                  = 0x8A04
+       VERTEX_ATTRIB_MAP1_DOMAIN_APPLE                 = 0x8A05
+       VERTEX_ATTRIB_MAP2_SIZE_APPLE                   = 0x8A06
+       VERTEX_ATTRIB_MAP2_COEFF_APPLE                  = 0x8A07
+       VERTEX_ATTRIB_MAP2_ORDER_APPLE                  = 0x8A08
+       VERTEX_ATTRIB_MAP2_DOMAIN_APPLE                 = 0x8A09
+
+APPLE_fence enum:
+       DRAW_PIXELS_APPLE                               = 0x8A0A
+       FENCE_APPLE                                     = 0x8A0B
+
+## From Jeremy 2006/10/18 (Khronos bug 632) - unknown extension name
+       ELEMENT_ARRAY_APPLE                             = 0x8A0C
+       ELEMENT_ARRAY_TYPE_APPLE                        = 0x8A0D
+       ELEMENT_ARRAY_POINTER_APPLE                     = 0x8A0E
+
+APPLE_float_pixels enum:
+       COLOR_FLOAT_APPLE                               = 0x8A0F
+
+# APPLE_future_use: 0x8A10
+## From Jeremy 2006/10/18 (Khronos bug 632) - unknown extension name
+#      MIN_PBUFFER_VIEWPORT_DIMS_APPLE                 = 0x8A10
+#      ELEMENT_BUFFER_BINDING_APPLE                    = 0x8A11
+# Apple says the extension that defined ELEMENT_BUFFER_BINDING_APPLE
+# never shipped and there's no actual collision with UNIFORM_BUFFER
+
+VERSION_3_1 enum:
+       use ARB_uniform_buffer_object       UNIFORM_BUFFER
+
+ARB_uniform_buffer_object enum: (additional; see below)
+       UNIFORM_BUFFER                                  = 0x8A11
+
+APPLE_flush_buffer_range enum:
+       BUFFER_SERIALIZED_MODIFY_APPLE                  = 0x8A12
+       BUFFER_FLUSHING_UNMAP_APPLE                     = 0x8A13
+
+APPLE_aux_depth_stencil enum:
+       AUX_DEPTH_STENCIL_APPLE                         = 0x8A14
+
+APPLE_row_bytes enum:
+       PACK_ROW_BYTES_APPLE                            = 0x8A15
+       UNPACK_ROW_BYTES_APPLE                          = 0x8A16
+
+# APPLE_future_use: 0x8A17-0x8A18
+
+APPLE_object_purgeable enum:
+       RELEASED_APPLE                                  = 0x8A19
+       VOLATILE_APPLE                                  = 0x8A1A
+       RETAINED_APPLE                                  = 0x8A1B
+       UNDEFINED_APPLE                                 = 0x8A1C
+       PURGEABLE_APPLE                                 = 0x8A1D
+
+# APPLE_future_use: 0x8A1E
+
+APPLE_rgb_422 enum:
+       RGB_422_APPLE                                   = 0x8A1F
+       use APPLE_ycbcr_422                 UNSIGNED_SHORT_8_8_APPLE
+       use APPLE_ycbcr_422                 UNSIGNED_SHORT_8_8_REV_APPLE
+
+# APPLE_future_use: 0x8A20--0x8A27
+
+VERSION_3_1 enum:
+       use ARB_uniform_buffer_object       UNIFORM_BUFFER_BINDING
+       use ARB_uniform_buffer_object       UNIFORM_BUFFER_START
+       use ARB_uniform_buffer_object       UNIFORM_BUFFER_SIZE
+       use ARB_uniform_buffer_object       MAX_VERTEX_UNIFORM_BLOCKS
+       use ARB_uniform_buffer_object       MAX_GEOMETRY_UNIFORM_BLOCKS
+       use ARB_uniform_buffer_object       MAX_FRAGMENT_UNIFORM_BLOCKS
+       use ARB_uniform_buffer_object       MAX_COMBINED_UNIFORM_BLOCKS
+       use ARB_uniform_buffer_object       MAX_UNIFORM_BUFFER_BINDINGS
+       use ARB_uniform_buffer_object       MAX_UNIFORM_BLOCK_SIZE
+       use ARB_uniform_buffer_object       MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS
+       use ARB_uniform_buffer_object       MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS
+       use ARB_uniform_buffer_object       MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
+       use ARB_uniform_buffer_object       UNIFORM_BUFFER_OFFSET_ALIGNMENT
+       use ARB_uniform_buffer_object       ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
+       use ARB_uniform_buffer_object       ACTIVE_UNIFORM_BLOCKS
+       use ARB_uniform_buffer_object       UNIFORM_TYPE
+       use ARB_uniform_buffer_object       UNIFORM_SIZE
+       use ARB_uniform_buffer_object       UNIFORM_NAME_LENGTH
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_INDEX
+       use ARB_uniform_buffer_object       UNIFORM_OFFSET
+       use ARB_uniform_buffer_object       UNIFORM_ARRAY_STRIDE
+       use ARB_uniform_buffer_object       UNIFORM_MATRIX_STRIDE
+       use ARB_uniform_buffer_object       UNIFORM_IS_ROW_MAJOR
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_BINDING
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_DATA_SIZE
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_NAME_LENGTH
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_ACTIVE_UNIFORMS
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
+       use ARB_uniform_buffer_object       INVALID_INDEX
+
+ARB_uniform_buffer_object enum:
+       UNIFORM_BUFFER_BINDING                          = 0x8A28
+       UNIFORM_BUFFER_START                            = 0x8A29
+       UNIFORM_BUFFER_SIZE                             = 0x8A2A
+       MAX_VERTEX_UNIFORM_BLOCKS                       = 0x8A2B
+       MAX_GEOMETRY_UNIFORM_BLOCKS                     = 0x8A2C
+       MAX_FRAGMENT_UNIFORM_BLOCKS                     = 0x8A2D
+       MAX_COMBINED_UNIFORM_BLOCKS                     = 0x8A2E
+       MAX_UNIFORM_BUFFER_BINDINGS                     = 0x8A2F
+       MAX_UNIFORM_BLOCK_SIZE                          = 0x8A30
+       MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS          = 0x8A31
+       MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS        = 0x8A32
+       MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS        = 0x8A33
+       UNIFORM_BUFFER_OFFSET_ALIGNMENT                 = 0x8A34
+       ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH            = 0x8A35
+       ACTIVE_UNIFORM_BLOCKS                           = 0x8A36
+       UNIFORM_TYPE                                    = 0x8A37
+       UNIFORM_SIZE                                    = 0x8A38
+       UNIFORM_NAME_LENGTH                             = 0x8A39
+       UNIFORM_BLOCK_INDEX                             = 0x8A3A
+       UNIFORM_OFFSET                                  = 0x8A3B
+       UNIFORM_ARRAY_STRIDE                            = 0x8A3C
+       UNIFORM_MATRIX_STRIDE                           = 0x8A3D
+       UNIFORM_IS_ROW_MAJOR                            = 0x8A3E
+       UNIFORM_BLOCK_BINDING                           = 0x8A3F
+       UNIFORM_BLOCK_DATA_SIZE                         = 0x8A40
+       UNIFORM_BLOCK_NAME_LENGTH                       = 0x8A41
+       UNIFORM_BLOCK_ACTIVE_UNIFORMS                   = 0x8A42
+       UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES            = 0x8A43
+       UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER       = 0x8A44
+       UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER     = 0x8A45
+       UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER     = 0x8A46
+       INVALID_INDEX                                   = 0xFFFFFFFFu
+
+# APPLE_future_use: 0x8A47-0x8A7F
+
+###############################################################################
+
+# Matrox: 0x8A80-0x8AEF
+
+###############################################################################
+
+# Chromium (Brian Paul): 0x8AF0-0x8B2F
+
+###############################################################################
+
+# ARB HLSL shader extensions: 0x8B30-0x8B8F
+
+
+VERSION_3_1 enum: (Promoted from ARB_shader_objects + ARB_texture_rectangle)
+       SAMPLER_2D_RECT                                 = 0x8B63    # ARB_shader_objects + ARB_texture_rectangle
+       SAMPLER_2D_RECT_SHADOW                          = 0x8B64    # ARB_shader_objects + ARB_texture_rectangle
+
+#@@ separate extensions
+VERSION_2_0 enum: (Promoted for OpenGL 2.0; only some values; renaming in many cases)
+ARB_shader_objects, ARB_vertex_shader, ARB_fragment_shader enum:
+NV_vertex_program3 enum: (reuses 0x8B4C)
+##Shader types + room for expansion
+       FRAGMENT_SHADER                                 = 0x8B30    # VERSION_2_0
+       FRAGMENT_SHADER_ARB                             = 0x8B30    # ARB_fragment_shader
+       VERTEX_SHADER                                   = 0x8B31    # VERSION_2_0
+       VERTEX_SHADER_ARB                               = 0x8B31    # ARB_vertex_shader
+# ARB_future_use: 0x8B32-0x8B3F (for shader types)
+##Container types + room for expansion
+       PROGRAM_OBJECT_ARB                              = 0x8B40    # ARB_shader_objects
+# ARB_future_use: 0x8B41-0x8B47 (for container types)
+##Misc. shader enums
+       SHADER_OBJECT_ARB                               = 0x8B48    # ARB_shader_objects
+       MAX_FRAGMENT_UNIFORM_COMPONENTS                 = 0x8B49    # VERSION_2_0
+       MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB             = 0x8B49    # ARB_fragment_shader
+       MAX_VERTEX_UNIFORM_COMPONENTS                   = 0x8B4A    # VERSION_2_0
+       MAX_VERTEX_UNIFORM_COMPONENTS_ARB               = 0x8B4A    # ARB_vertex_shader
+       MAX_VARYING_FLOATS                              = 0x8B4B    # VERSION_2_0
+       MAX_VARYING_FLOATS_ARB                          = 0x8B4B    # ARB_vertex_shader
+       MAX_VERTEX_TEXTURE_IMAGE_UNITS                  = 0x8B4C    # VERSION_2_0
+       MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB              = 0x8B4C    # ARB_vertex_shader, NV_vertex_program3
+       MAX_COMBINED_TEXTURE_IMAGE_UNITS                = 0x8B4D    # VERSION_2_0
+       MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB            = 0x8B4D    # ARB_vertex_shader
+       OBJECT_TYPE_ARB                                 = 0x8B4E    # ARB_shader_objects
+       SHADER_TYPE                                     = 0x8B4F    # VERSION_2_0 (renamed)
+       OBJECT_SUBTYPE_ARB                              = 0x8B4F    # ARB_shader_objects
+##Attribute types + room for expansion.
+       FLOAT_VEC2                                      = 0x8B50    # VERSION_2_0
+       FLOAT_VEC2_ARB                                  = 0x8B50    # ARB_shader_objects
+       FLOAT_VEC3                                      = 0x8B51    # VERSION_2_0
+       FLOAT_VEC3_ARB                                  = 0x8B51    # ARB_shader_objects
+       FLOAT_VEC4                                      = 0x8B52    # VERSION_2_0
+       FLOAT_VEC4_ARB                                  = 0x8B52    # ARB_shader_objects
+       INT_VEC2                                        = 0x8B53    # VERSION_2_0
+       INT_VEC2_ARB                                    = 0x8B53    # ARB_shader_objects
+       INT_VEC3                                        = 0x8B54    # VERSION_2_0
+       INT_VEC3_ARB                                    = 0x8B54    # ARB_shader_objects
+       INT_VEC4                                        = 0x8B55    # VERSION_2_0
+       INT_VEC4_ARB                                    = 0x8B55    # ARB_shader_objects
+       BOOL                                            = 0x8B56    # VERSION_2_0
+       BOOL_ARB                                        = 0x8B56    # ARB_shader_objects
+       BOOL_VEC2                                       = 0x8B57    # VERSION_2_0
+       BOOL_VEC2_ARB                                   = 0x8B57    # ARB_shader_objects
+       BOOL_VEC3                                       = 0x8B58    # VERSION_2_0
+       BOOL_VEC3_ARB                                   = 0x8B58    # ARB_shader_objects
+       BOOL_VEC4                                       = 0x8B59    # VERSION_2_0
+       BOOL_VEC4_ARB                                   = 0x8B59    # ARB_shader_objects
+       FLOAT_MAT2                                      = 0x8B5A    # VERSION_2_0
+       FLOAT_MAT2_ARB                                  = 0x8B5A    # ARB_shader_objects
+       FLOAT_MAT3                                      = 0x8B5B    # VERSION_2_0
+       FLOAT_MAT3_ARB                                  = 0x8B5B    # ARB_shader_objects
+       FLOAT_MAT4                                      = 0x8B5C    # VERSION_2_0
+       FLOAT_MAT4_ARB                                  = 0x8B5C    # ARB_shader_objects
+       SAMPLER_1D                                      = 0x8B5D    # VERSION_2_0
+       SAMPLER_1D_ARB                                  = 0x8B5D    # ARB_shader_objects
+       SAMPLER_2D                                      = 0x8B5E    # VERSION_2_0
+       SAMPLER_2D_ARB                                  = 0x8B5E    # ARB_shader_objects
+       SAMPLER_3D                                      = 0x8B5F    # VERSION_2_0
+       SAMPLER_3D_ARB                                  = 0x8B5F    # ARB_shader_objects
+       SAMPLER_CUBE                                    = 0x8B60    # VERSION_2_0
+       SAMPLER_CUBE_ARB                                = 0x8B60    # ARB_shader_objects
+       SAMPLER_1D_SHADOW                               = 0x8B61    # VERSION_2_0
+       SAMPLER_1D_SHADOW_ARB                           = 0x8B61    # ARB_shader_objects
+       SAMPLER_2D_SHADOW                               = 0x8B62    # VERSION_2_0
+       SAMPLER_2D_SHADOW_ARB                           = 0x8B62    # ARB_shader_objects
+       SAMPLER_2D_RECT_ARB                             = 0x8B63    # ARB_shader_objects
+       SAMPLER_2D_RECT_SHADOW_ARB                      = 0x8B64    # ARB_shader_objects
+       FLOAT_MAT2x3                                    = 0x8B65    # VERSION_2_1
+       FLOAT_MAT2x4                                    = 0x8B66    # VERSION_2_1
+       FLOAT_MAT3x2                                    = 0x8B67    # VERSION_2_1
+       FLOAT_MAT3x4                                    = 0x8B68    # VERSION_2_1
+       FLOAT_MAT4x2                                    = 0x8B69    # VERSION_2_1
+       FLOAT_MAT4x3                                    = 0x8B6A    # VERSION_2_1
+# ARB_future_use: 0x8B6B-0x8B7F (for attribute types)
+       DELETE_STATUS                                   = 0x8B80    # VERSION_2_0 (renamed)
+       OBJECT_DELETE_STATUS_ARB                        = 0x8B80    # ARB_shader_objects
+       COMPILE_STATUS                                  = 0x8B81    # VERSION_2_0 (renamed)
+       OBJECT_COMPILE_STATUS_ARB                       = 0x8B81    # ARB_shader_objects
+       LINK_STATUS                                     = 0x8B82    # VERSION_2_0 (renamed)
+       OBJECT_LINK_STATUS_ARB                          = 0x8B82    # ARB_shader_objects
+       VALIDATE_STATUS                                 = 0x8B83    # VERSION_2_0 (renamed)
+       OBJECT_VALIDATE_STATUS_ARB                      = 0x8B83    # ARB_shader_objects
+       INFO_LOG_LENGTH                                 = 0x8B84    # VERSION_2_0 (renamed)
+       OBJECT_INFO_LOG_LENGTH_ARB                      = 0x8B84    # ARB_shader_objects
+       ATTACHED_SHADERS                                = 0x8B85    # VERSION_2_0 (renamed)
+       OBJECT_ATTACHED_OBJECTS_ARB                     = 0x8B85    # ARB_shader_objects
+       ACTIVE_UNIFORMS                                 = 0x8B86    # VERSION_2_0 (renamed)
+       OBJECT_ACTIVE_UNIFORMS_ARB                      = 0x8B86    # ARB_shader_objects
+       ACTIVE_UNIFORM_MAX_LENGTH                       = 0x8B87    # VERSION_2_0 (renamed)
+       OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB            = 0x8B87    # ARB_shader_objects
+       SHADER_SOURCE_LENGTH                            = 0x8B88    # VERSION_2_0 (renamed)
+       OBJECT_SHADER_SOURCE_LENGTH_ARB                 = 0x8B88    # ARB_shader_objects
+       ACTIVE_ATTRIBUTES                               = 0x8B89    # VERSION_2_0 (renamed)
+       OBJECT_ACTIVE_ATTRIBUTES_ARB                    = 0x8B89    # ARB_vertex_shader
+       ACTIVE_ATTRIBUTE_MAX_LENGTH                     = 0x8B8A    # VERSION_2_0 (renamed)
+       OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB          = 0x8B8A    # ARB_vertex_shader
+       FRAGMENT_SHADER_DERIVATIVE_HINT                 = 0x8B8B    # VERSION_2_0
+       FRAGMENT_SHADER_DERIVATIVE_HINT_ARB             = 0x8B8B    # ARB_fragment_shader
+       SHADING_LANGUAGE_VERSION                        = 0x8B8C    # VERSION_2_0
+       SHADING_LANGUAGE_VERSION_ARB                    = 0x8B8C    # ARB_shading_language_100
+
+# Aliases ARB_shader_objects enum above
+OES_texture3D enum: (OpenGL ES only; additional; see above)
+       SAMPLER_3D_OES                                  = 0x8B5F    # ARB_shader_objects
+
+# Aliases ARB_fragment_shader enum above
+OES_standard_derivatives enum: (OpenGL ES only)
+       FRAGMENT_SHADER_DERIVATIVE_HINT_OES             = 0x8B8B
+
+VERSION_3_0 enum:
+       MAX_VARYING_COMPONENTS                          = 0x8B4B    # VERSION_3_0   # alias GL_MAX_VARYING_FLOATS
+
+ARB_geometry_shader4 enum: (additional; see below; note: no ARB suffixes)
+       use VERSION_3_0                     MAX_VARYING_COMPONENTS
+
+EXT_geometry_shader4 enum: (additional; see below)
+       MAX_VARYING_COMPONENTS_EXT                      = 0x8B4B
+
+VERSION_2_0 enum:
+       CURRENT_PROGRAM                                 = 0x8B8D
+
+# Aliases CURRENT_PROGRAM
+EXT_separate_shader_objects enum:
+       ACTIVE_PROGRAM_EXT                              = 0x8B8D
+
+# ARB_future_use: 0x8B8E-0x8B8F
+
+###############################################################################
+
+# Khronos OpenGL ES WG: 0x8B90-0x8B9F
+
+OES_compressed_paletted_texture enum: (OpenGL ES only)
+       PALETTE4_RGB8_OES                               = 0x8B90
+       PALETTE4_RGBA8_OES                              = 0x8B91
+       PALETTE4_R5_G6_B5_OES                           = 0x8B92
+       PALETTE4_RGBA4_OES                              = 0x8B93
+       PALETTE4_RGB5_A1_OES                            = 0x8B94
+       PALETTE8_RGB8_OES                               = 0x8B95
+       PALETTE8_RGBA8_OES                              = 0x8B96
+       PALETTE8_R5_G6_B5_OES                           = 0x8B97
+       PALETTE8_RGBA4_OES                              = 0x8B98
+       PALETTE8_RGB5_A1_OES                            = 0x8B99
+
+OES_read_format enum: (OpenGL ES, also implemented in Mesa)
+       IMPLEMENTATION_COLOR_READ_TYPE_OES              = 0x8B9A
+       IMPLEMENTATION_COLOR_READ_FORMAT_OES            = 0x8B9B
+
+OES_point_size_array enum: (OpenGL ES only; additional; see above)
+       POINT_SIZE_ARRAY_OES                            = 0x8B9C
+
+OES_draw_texture enum: (OpenGL ES only)
+       TEXTURE_CROP_RECT_OES                           = 0x8B9D
+
+OES_matrix_palette enum: (OpenGL ES only)
+       MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES           = 0x8B9E
+
+OES_point_size_array enum: (OpenGL ES only; additional; see above)
+       POINT_SIZE_ARRAY_BUFFER_BINDING_OES             = 0x8B9F
+
+###############################################################################
+
+# Seaweed: 0x8BA0-0x8BAF
+
+###############################################################################
+
+# Mesa: 0x8BB0-0x8BBF
+#   Probably one of the two 0x8BB4 enums should be 0x8BB5, but the
+#   extension spec is not complete in any event.
+MESA_program_debug enum:
+       FRAGMENT_PROGRAM_POSITION_MESA                  = 0x8BB0
+       FRAGMENT_PROGRAM_CALLBACK_MESA                  = 0x8BB1
+       FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA             = 0x8BB2
+       FRAGMENT_PROGRAM_CALLBACK_DATA_MESA             = 0x8BB3
+       VERTEX_PROGRAM_CALLBACK_MESA                    = 0x8BB4
+       VERTEX_PROGRAM_POSITION_MESA                    = 0x8BB4
+       VERTEX_PROGRAM_CALLBACK_FUNC_MESA               = 0x8BB6
+       VERTEX_PROGRAM_CALLBACK_DATA_MESA               = 0x8BB7
+
+###############################################################################
+
+# ATI: 0x8BC0-0x8BFF
+
+AMD_performance_monitor enum:
+       COUNTER_TYPE_AMD                                = 0x8BC0
+       COUNTER_RANGE_AMD                               = 0x8BC1
+       UNSIGNED_INT64_AMD                              = 0x8BC2
+       PERCENTAGE_AMD                                  = 0x8BC3
+       PERFMON_RESULT_AVAILABLE_AMD                    = 0x8BC4
+       PERFMON_RESULT_SIZE_AMD                         = 0x8BC5
+       PERFMON_RESULT_AMD                              = 0x8BC6
+
+# ATI_future_use: 0x8BC7-0x8BD1
+
+QCOM_extended_get enum: (OpenGL ES only)
+       TEXTURE_WIDTH_QCOM                              = 0x8BD2
+       TEXTURE_HEIGHT_QCOM                             = 0x8BD3
+       TEXTURE_DEPTH_QCOM                              = 0x8BD4
+       TEXTURE_INTERNAL_FORMAT_QCOM                    = 0x8BD5
+       TEXTURE_FORMAT_QCOM                             = 0x8BD6
+       TEXTURE_TYPE_QCOM                               = 0x8BD7
+       TEXTURE_IMAGE_VALID_QCOM                        = 0x8BD8
+       TEXTURE_NUM_LEVELS_QCOM                         = 0x8BD9
+       TEXTURE_TARGET_QCOM                             = 0x8BDA
+       TEXTURE_OBJECT_VALID_QCOM                       = 0x8BDB
+       STATE_RESTORE                                   = 0x8BDC
+
+# ATI_future_use: 0x8BDD-0x8BFF
+
+###############################################################################
+
+# Imagination Tech.: 0x8C00-0x8C0F
+
+IMG_texture_compression_pvrtc enum: (OpenGL ES only)
+       COMPRESSED_RGB_PVRTC_4BPPV1_IMG                 = 0x8C00
+       COMPRESSED_RGB_PVRTC_2BPPV1_IMG                 = 0x8C01
+       COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                = 0x8C02
+       COMPRESSED_RGBA_PVRTC_2BPPV1_IMG                = 0x8C03
+
+IMG_texture_env_enhanced_fixed_function enum: (OpenGL ES only)
+       MODULATE_COLOR_IMG                              = 0x8C04
+       RECIP_ADD_SIGNED_ALPHA_IMG                      = 0x8C05
+       TEXTURE_ALPHA_MODULATE_IMG                      = 0x8C06
+       FACTOR_ALPHA_MODULATE_IMG                       = 0x8C07
+       FRAGMENT_ALPHA_MODULATE_IMG                     = 0x8C08
+       ADD_BLEND_IMG                                   = 0x8C09
+
+IMG_shader_binary: (OpenGL ES only)
+       SGX_BINARY_IMG                                  = 0x8C0A
+
+# IMG_future_use: 0x8C0B-0x8C0F
+
+###############################################################################
+
+# NVIDIA: 0x8C10-0x8C8F (Pat Brown)
+
+VERSION_3_0 enum:
+       use ARB_framebuffer_object          TEXTURE_RED_TYPE
+       use ARB_framebuffer_object          TEXTURE_GREEN_TYPE
+       use ARB_framebuffer_object          TEXTURE_BLUE_TYPE
+       use ARB_framebuffer_object          TEXTURE_ALPHA_TYPE
+       use ARB_framebuffer_object          TEXTURE_LUMINANCE_TYPE
+       use ARB_framebuffer_object          TEXTURE_INTENSITY_TYPE
+       use ARB_framebuffer_object          TEXTURE_DEPTH_TYPE
+       use ARB_framebuffer_object          UNSIGNED_NORMALIZED
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+       TEXTURE_RED_TYPE                                = 0x8C10    # VERSION_3_0 / ARB_fbo
+       TEXTURE_GREEN_TYPE                              = 0x8C11    # VERSION_3_0 / ARB_fbo
+       TEXTURE_BLUE_TYPE                               = 0x8C12    # VERSION_3_0 / ARB_fbo
+       TEXTURE_ALPHA_TYPE                              = 0x8C13    # VERSION_3_0 / ARB_fbo
+       TEXTURE_LUMINANCE_TYPE                          = 0x8C14    # VERSION_3_0 / ARB_fbo
+       TEXTURE_INTENSITY_TYPE                          = 0x8C15    # VERSION_3_0 / ARB_fbo
+       TEXTURE_DEPTH_TYPE                              = 0x8C16    # VERSION_3_0 / ARB_fbo
+       UNSIGNED_NORMALIZED                             = 0x8C17    # VERSION_3_0 / ARB_fbo
+
+ARB_texture_float enum: (additional; see above)
+       TEXTURE_RED_TYPE_ARB                            = 0x8C10
+       TEXTURE_GREEN_TYPE_ARB                          = 0x8C11
+       TEXTURE_BLUE_TYPE_ARB                           = 0x8C12
+       TEXTURE_ALPHA_TYPE_ARB                          = 0x8C13
+       TEXTURE_LUMINANCE_TYPE_ARB                      = 0x8C14
+       TEXTURE_INTENSITY_TYPE_ARB                      = 0x8C15
+       TEXTURE_DEPTH_TYPE_ARB                          = 0x8C16
+       UNSIGNED_NORMALIZED_ARB                         = 0x8C17
+
+VERSION_3_0 enum:
+       TEXTURE_1D_ARRAY                                = 0x8C18    # VERSION_3_0
+       PROXY_TEXTURE_1D_ARRAY                          = 0x8C19    # VERSION_3_0
+       TEXTURE_2D_ARRAY                                = 0x8C1A    # VERSION_3_0
+       PROXY_TEXTURE_2D_ARRAY                          = 0x8C1B    # VERSION_3_0
+       TEXTURE_BINDING_1D_ARRAY                        = 0x8C1C    # VERSION_3_0
+       TEXTURE_BINDING_2D_ARRAY                        = 0x8C1D    # VERSION_3_0
+
+EXT_texture_array enum:
+       TEXTURE_1D_ARRAY_EXT                            = 0x8C18
+       PROXY_TEXTURE_1D_ARRAY_EXT                      = 0x8C19
+       TEXTURE_2D_ARRAY_EXT                            = 0x8C1A
+       PROXY_TEXTURE_2D_ARRAY_EXT                      = 0x8C1B
+       TEXTURE_BINDING_1D_ARRAY_EXT                    = 0x8C1C
+       TEXTURE_BINDING_2D_ARRAY_EXT                    = 0x8C1D
+
+# NV_future_use: 0x8C1E-0x8C25
+
+VERSION_3_2 enum:
+       MAX_GEOMETRY_TEXTURE_IMAGE_UNITS                = 0x8C29
+
+ARB_geometry_shader4 enum: (additional; see below)
+       MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB            = 0x8C29
+
+NV_geometry_program4 enum:
+       GEOMETRY_PROGRAM_NV                             = 0x8C26
+       MAX_PROGRAM_OUTPUT_VERTICES_NV                  = 0x8C27
+       MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV          = 0x8C28
+       MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT            = 0x8C29
+
+VERSION_3_1 enum:
+       TEXTURE_BUFFER                                  = 0x8C2A
+       MAX_TEXTURE_BUFFER_SIZE                         = 0x8C2B
+       TEXTURE_BINDING_BUFFER                          = 0x8C2C
+       TEXTURE_BUFFER_DATA_STORE_BINDING               = 0x8C2D
+       TEXTURE_BUFFER_FORMAT                           = 0x8C2E
+
+ARB_texture_buffer_object enum:
+       TEXTURE_BUFFER_ARB                              = 0x8C2A
+       MAX_TEXTURE_BUFFER_SIZE_ARB                     = 0x8C2B
+       TEXTURE_BINDING_BUFFER_ARB                      = 0x8C2C
+       TEXTURE_BUFFER_DATA_STORE_BINDING_ARB           = 0x8C2D
+       TEXTURE_BUFFER_FORMAT_ARB                       = 0x8C2E
+
+EXT_texture_buffer_object enum:
+       TEXTURE_BUFFER_EXT                              = 0x8C2A
+       MAX_TEXTURE_BUFFER_SIZE_EXT                     = 0x8C2B
+       TEXTURE_BINDING_BUFFER_EXT                      = 0x8C2C
+       TEXTURE_BUFFER_DATA_STORE_BINDING_EXT           = 0x8C2D
+       TEXTURE_BUFFER_FORMAT_EXT                       = 0x8C2E
+
+# NV_future_use: 0x8C2F-0x8C35
+
+ARB_sample_shading enum:
+       SAMPLE_SHADING_ARB                              = 0x8C36
+       MIN_SAMPLE_SHADING_VALUE_ARB                    = 0x8C37
+
+# NV_future_use: 0x8C38-0x8C39
+
+VERSION_3_0 enum:
+       R11F_G11F_B10F                                  = 0x8C3A    # VERSION_3_0
+       UNSIGNED_INT_10F_11F_11F_REV                    = 0x8C3B    # VERSION_3_0
+
+EXT_packed_float enum:
+       R11F_G11F_B10F_EXT                              = 0x8C3A
+       UNSIGNED_INT_10F_11F_11F_REV_EXT                = 0x8C3B
+       RGBA_SIGNED_COMPONENTS_EXT                      = 0x8C3C
+
+VERSION_3_0 enum:
+       RGB9_E5                                         = 0x8C3D    # VERSION_3_0
+       UNSIGNED_INT_5_9_9_9_REV                        = 0x8C3E    # VERSION_3_0
+       TEXTURE_SHARED_SIZE                             = 0x8C3F    # VERSION_3_0
+
+EXT_texture_shared_exponent enum:
+       RGB9_E5_EXT                                     = 0x8C3D
+       UNSIGNED_INT_5_9_9_9_REV_EXT                    = 0x8C3E
+       TEXTURE_SHARED_SIZE_EXT                         = 0x8C3F
+
+VERSION_2_1 enum: (Generic formats promoted for OpenGL 2.1)
+       SRGB                                            = 0x8C40    # VERSION_2_1
+       SRGB8                                           = 0x8C41    # VERSION_2_1
+       SRGB_ALPHA                                      = 0x8C42    # VERSION_2_1
+       SRGB8_ALPHA8                                    = 0x8C43    # VERSION_2_1
+       SLUMINANCE_ALPHA                                = 0x8C44    # VERSION_2_1
+       SLUMINANCE8_ALPHA8                              = 0x8C45    # VERSION_2_1
+       SLUMINANCE                                      = 0x8C46    # VERSION_2_1
+       SLUMINANCE8                                     = 0x8C47    # VERSION_2_1
+       COMPRESSED_SRGB                                 = 0x8C48    # VERSION_2_1
+       COMPRESSED_SRGB_ALPHA                           = 0x8C49    # VERSION_2_1
+       COMPRESSED_SLUMINANCE                           = 0x8C4A    # VERSION_2_1
+       COMPRESSED_SLUMINANCE_ALPHA                     = 0x8C4B    # VERSION_2_1
+
+EXT_texture_sRGB enum:
+       SRGB_EXT                                        = 0x8C40    # EXT_texture_sRGB
+       SRGB8_EXT                                       = 0x8C41    # EXT_texture_sRGB
+       SRGB_ALPHA_EXT                                  = 0x8C42    # EXT_texture_sRGB
+       SRGB8_ALPHA8_EXT                                = 0x8C43    # EXT_texture_sRGB
+       SLUMINANCE_ALPHA_EXT                            = 0x8C44    # EXT_texture_sRGB
+       SLUMINANCE8_ALPHA8_EXT                          = 0x8C45    # EXT_texture_sRGB
+       SLUMINANCE_EXT                                  = 0x8C46    # EXT_texture_sRGB
+       SLUMINANCE8_EXT                                 = 0x8C47    # EXT_texture_sRGB
+       COMPRESSED_SRGB_EXT                             = 0x8C48    # EXT_texture_sRGB
+       COMPRESSED_SRGB_ALPHA_EXT                       = 0x8C49    # EXT_texture_sRGB
+       COMPRESSED_SLUMINANCE_EXT                       = 0x8C4A    # EXT_texture_sRGB
+       COMPRESSED_SLUMINANCE_ALPHA_EXT                 = 0x8C4B    # EXT_texture_sRGB
+       COMPRESSED_SRGB_S3TC_DXT1_EXT                   = 0x8C4C
+       COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT             = 0x8C4D
+       COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT             = 0x8C4E
+       COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT             = 0x8C4F
+
+# NV_future_use: 0x8C50-0x8C6F
+
+EXT_texture_compression_latc enum:
+       COMPRESSED_LUMINANCE_LATC1_EXT                  = 0x8C70
+       COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT           = 0x8C71
+       COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT            = 0x8C72
+       COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT     = 0x8C73
+
+# NV_future_use: 0x8C74-0x8C75
+
+#@@ separate extensions
+VERSION_3_0 enum:
+EXT_transform_feedback enum:
+NV_transform_feedback enum:
+       TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH           = 0x8C76    # VERSION_3_0
+       TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT       = 0x8C76
+       BACK_PRIMARY_COLOR_NV                           = 0x8C77
+       BACK_SECONDARY_COLOR_NV                         = 0x8C78
+       TEXTURE_COORD_NV                                = 0x8C79
+       CLIP_DISTANCE_NV                                = 0x8C7A
+       VERTEX_ID_NV                                    = 0x8C7B
+       PRIMITIVE_ID_NV                                 = 0x8C7C
+       GENERIC_ATTRIB_NV                               = 0x8C7D
+       TRANSFORM_FEEDBACK_ATTRIBS_NV                   = 0x8C7E
+       TRANSFORM_FEEDBACK_BUFFER_MODE                  = 0x8C7F    # VERSION_3_0
+       TRANSFORM_FEEDBACK_BUFFER_MODE_EXT              = 0x8C7F
+       TRANSFORM_FEEDBACK_BUFFER_MODE_NV               = 0x8C7F
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS      = 0x8C80    # VERSION_3_0
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT  = 0x8C80
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV   = 0x8C80
+       ACTIVE_VARYINGS_NV                              = 0x8C81
+       ACTIVE_VARYING_MAX_LENGTH_NV                    = 0x8C82
+       TRANSFORM_FEEDBACK_VARYINGS                     = 0x8C83    # VERSION_3_0
+       TRANSFORM_FEEDBACK_VARYINGS_EXT                 = 0x8C83
+       TRANSFORM_FEEDBACK_VARYINGS_NV                  = 0x8C83
+       TRANSFORM_FEEDBACK_BUFFER_START                 = 0x8C84    # VERSION_3_0
+       TRANSFORM_FEEDBACK_BUFFER_START_EXT             = 0x8C84
+       TRANSFORM_FEEDBACK_BUFFER_START_NV              = 0x8C84
+       TRANSFORM_FEEDBACK_BUFFER_SIZE                  = 0x8C85    # VERSION_3_0
+       TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT              = 0x8C85
+       TRANSFORM_FEEDBACK_BUFFER_SIZE_NV               = 0x8C85
+       TRANSFORM_FEEDBACK_RECORD_NV                    = 0x8C86
+       PRIMITIVES_GENERATED                            = 0x8C87    # VERSION_3_0
+       PRIMITIVES_GENERATED_EXT                        = 0x8C87
+       PRIMITIVES_GENERATED_NV                         = 0x8C87
+       TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN           = 0x8C88    # VERSION_3_0
+       TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT       = 0x8C88
+       TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV        = 0x8C88
+       RASTERIZER_DISCARD                              = 0x8C89    # VERSION_3_0
+       RASTERIZER_DISCARD_EXT                          = 0x8C89
+       RASTERIZER_DISCARD_NV                           = 0x8C89
+       MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS   = 0x8C8A    # VERSION_3_0
+       MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = 0x8C8A
+       MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV   = 0x8C8A
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS         = 0x8C8B    # VERSION_3_0
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT     = 0x8C8B
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV      = 0x8C8B
+       INTERLEAVED_ATTRIBS                             = 0x8C8C    # VERSION_3_0
+       INTERLEAVED_ATTRIBS_EXT                         = 0x8C8C
+       INTERLEAVED_ATTRIBS_NV                          = 0x8C8C
+       SEPARATE_ATTRIBS                                = 0x8C8D    # VERSION_3_0
+       SEPARATE_ATTRIBS_EXT                            = 0x8C8D
+       SEPARATE_ATTRIBS_NV                             = 0x8C8D
+       TRANSFORM_FEEDBACK_BUFFER                       = 0x8C8E    # VERSION_3_0
+       TRANSFORM_FEEDBACK_BUFFER_EXT                   = 0x8C8E
+       TRANSFORM_FEEDBACK_BUFFER_NV                    = 0x8C8E
+       TRANSFORM_FEEDBACK_BUFFER_BINDING               = 0x8C8F    # VERSION_3_0
+       TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT           = 0x8C8F
+       TRANSFORM_FEEDBACK_BUFFER_BINDING_NV            = 0x8C8F
+
+###############################################################################
+
+# ATI: 0x8C90-0x8C9F (Affie Munshi, OpenGL ES extensions)
+
+# Reassigned to Qualcomm at time of mobile/desktop split (bug 5874)
+# Qualcomm__future_use: 0x8C90-0x8C91
+
+AMD_compressed_ATC_texture enum: (OpenGL ES only)
+       ATC_RGB_AMD                                     = 0x8C92
+       ATC_RGBA_EXPLICIT_ALPHA_AMD                     = 0x8C93
+
+# Reassigned to Qualcomm at time of mobile/desktop split (bug 5874)
+# Qualcomm_future_use: 0x8C94-0x8C9F
+
+###############################################################################
+
+# OpenGL ARB: 0x8CA0-0x8CAF
+
+VERSION_2_0 enum:
+       POINT_SPRITE_COORD_ORIGIN                       = 0x8CA0
+       LOWER_LEFT                                      = 0x8CA1
+       UPPER_LEFT                                      = 0x8CA2
+       STENCIL_BACK_REF                                = 0x8CA3
+       STENCIL_BACK_VALUE_MASK                         = 0x8CA4
+       STENCIL_BACK_WRITEMASK                          = 0x8CA5
+
+VERSION_3_0 enum:
+       use ARB_framebuffer_object          FRAMEBUFFER_BINDING
+       use ARB_framebuffer_object          DRAW_FRAMEBUFFER_BINDING
+       use ARB_framebuffer_object          RENDERBUFFER_BINDING
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+       FRAMEBUFFER_BINDING                             = 0x8CA6    # VERSION_3_0 / ARB_fbo
+       DRAW_FRAMEBUFFER_BINDING                        = 0x8CA6    # VERSION_3_0 / ARB_fbo # alias GL_FRAMEBUFFER_BINDING
+       RENDERBUFFER_BINDING                            = 0x8CA7    # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_object enum: (additional; see below)
+       FRAMEBUFFER_BINDING_EXT                         = 0x8CA6
+       RENDERBUFFER_BINDING_EXT                        = 0x8CA7
+
+EXT_framebuffer_blit enum: (additional; see below)
+       DRAW_FRAMEBUFFER_BINDING_EXT                    = 0x8CA6    # EXT_framebuffer_blit  # alias GL_FRAMEBUFFER_BINDING_EXT
+
+# Aliases EXT_framebuffer_object enums above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+       FRAMEBUFFER_BINDING_OES                         = 0x8CA6
+       RENDERBUFFER_BINDING_OES                        = 0x8CA7
+
+VERSION_3_0 enum:
+       use ARB_framebuffer_object          READ_FRAMEBUFFER
+       use ARB_framebuffer_object          DRAW_FRAMEBUFFER
+       use ARB_framebuffer_object          READ_FRAMEBUFFER_BINDING
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+       READ_FRAMEBUFFER                                = 0x8CA8    # VERSION_3_0 / ARB_fbo
+       DRAW_FRAMEBUFFER                                = 0x8CA9    # VERSION_3_0 / ARB_fbo
+       READ_FRAMEBUFFER_BINDING                        = 0x8CAA    # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_blit enum:
+       READ_FRAMEBUFFER_EXT                            = 0x8CA8
+       DRAW_FRAMEBUFFER_EXT                            = 0x8CA9
+       DRAW_FRAMEBUFFER_BINDING_EXT                    = 0x8CA6    # alias GL_FRAMEBUFFER_BINDING_EXT
+       READ_FRAMEBUFFER_BINDING_EXT                    = 0x8CAA
+
+VERSION_3_0 enum:
+       use ARB_framebuffer_object          RENDERBUFFER_SAMPLES
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+       RENDERBUFFER_SAMPLES                            = 0x8CAB    # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_multisample enum:
+       RENDERBUFFER_SAMPLES_EXT                        = 0x8CAB
+
+NV_framebuffer_multisample_coverage enum: (additional; see below)
+       RENDERBUFFER_COVERAGE_SAMPLES_NV                = 0x8CAB
+
+# All enums except external format are incompatible with NV_depth_buffer_float
+VERSION_3_0 enum:
+ARB_depth_buffer_float enum: (note: no ARB suffixes)
+       DEPTH_COMPONENT32F                              = 0x8CAC
+       DEPTH32F_STENCIL8                               = 0x8CAD
+
+# ARB_future_use: 0x8CAF
+
+###############################################################################
+
+# 3Dlabs: 0x8CB0-0x8CCF (Barthold Lichtenbelt, 2004/12/1)
+
+###############################################################################
+
+# OpenGL ARB: 0x8CD0-0x8D5F (Framebuffer object specification + headroom)
+
+#@@ separate extensions
+VERSION_3_0 enum:
+ARB_geometry_shader4 enum: (additional; see below; note: no ARB suffixes)
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+EXT_framebuffer_object enum: (additional; see above)
+       FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE              = 0x8CD0    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT          = 0x8CD0
+       FRAMEBUFFER_ATTACHMENT_OBJECT_NAME              = 0x8CD1    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT          = 0x8CD1
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL            = 0x8CD2    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT        = 0x8CD2
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE    = 0x8CD3    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x8CD3
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER            = 0x8CD4    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT   = 0x8CD4
+       FRAMEBUFFER_COMPLETE                            = 0x8CD5    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_COMPLETE_EXT                        = 0x8CD5
+       FRAMEBUFFER_INCOMPLETE_ATTACHMENT               = 0x8CD6    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT           = 0x8CD6
+       FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT       = 0x8CD7    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT   = 0x8CD7
+## Removed 2005/09/26 in revision #117 of the extension:
+##       FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT = 0x8CD8
+       FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT           = 0x8CD9
+       FRAMEBUFFER_INCOMPLETE_FORMATS_EXT              = 0x8CDA
+       FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER              = 0x8CDB    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT          = 0x8CDB
+       FRAMEBUFFER_INCOMPLETE_READ_BUFFER              = 0x8CDC    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT          = 0x8CDC
+       FRAMEBUFFER_UNSUPPORTED                         = 0x8CDD    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_UNSUPPORTED_EXT                     = 0x8CDD
+## Removed 2005/05/31 in revision #113 of the extension:
+## FRAMEBUFFER_STATUS_ERROR_EXT                           = 0x8CDE
+       MAX_COLOR_ATTACHMENTS                           = 0x8CDF    # VERSION_3_0 / ARB_fbo
+       MAX_COLOR_ATTACHMENTS_EXT                       = 0x8CDF
+       COLOR_ATTACHMENT0                               = 0x8CE0    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT0_EXT                           = 0x8CE0
+       COLOR_ATTACHMENT1                               = 0x8CE1    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT1_EXT                           = 0x8CE1
+       COLOR_ATTACHMENT2                               = 0x8CE2    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT2_EXT                           = 0x8CE2
+       COLOR_ATTACHMENT3                               = 0x8CE3    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT3_EXT                           = 0x8CE3
+       COLOR_ATTACHMENT4                               = 0x8CE4    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT4_EXT                           = 0x8CE4
+       COLOR_ATTACHMENT5                               = 0x8CE5    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT5_EXT                           = 0x8CE5
+       COLOR_ATTACHMENT6                               = 0x8CE6    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT6_EXT                           = 0x8CE6
+       COLOR_ATTACHMENT7                               = 0x8CE7    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT7_EXT                           = 0x8CE7
+       COLOR_ATTACHMENT8                               = 0x8CE8    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT8_EXT                           = 0x8CE8
+       COLOR_ATTACHMENT9                               = 0x8CE9    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT9_EXT                           = 0x8CE9
+       COLOR_ATTACHMENT10                              = 0x8CEA    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT10_EXT                          = 0x8CEA
+       COLOR_ATTACHMENT11                              = 0x8CEB    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT11_EXT                          = 0x8CEB
+       COLOR_ATTACHMENT12                              = 0x8CEC    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT12_EXT                          = 0x8CEC
+       COLOR_ATTACHMENT13                              = 0x8CED    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT13_EXT                          = 0x8CED
+       COLOR_ATTACHMENT14                              = 0x8CEE    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT14_EXT                          = 0x8CEE
+       COLOR_ATTACHMENT15                              = 0x8CEF    # VERSION_3_0 / ARB_fbo
+       COLOR_ATTACHMENT15_EXT                          = 0x8CEF
+# 0x8CF0-0x8CFF reserved for color attachments 16-31, if needed
+       DEPTH_ATTACHMENT                                = 0x8D00    # VERSION_3_0 / ARB_fbo
+       DEPTH_ATTACHMENT_EXT                            = 0x8D00
+# 0x8D01-0x8D1F reserved for depth attachments 1-31, if needed
+       STENCIL_ATTACHMENT                              = 0x8D20    # VERSION_3_0 / ARB_fbo
+       STENCIL_ATTACHMENT_EXT                          = 0x8D20
+# 0x8D21-0x8D3F reserved for stencil attachments 1-31, if needed
+       FRAMEBUFFER                                     = 0x8D40    # VERSION_3_0 / ARB_fbo
+       FRAMEBUFFER_EXT                                 = 0x8D40
+       RENDERBUFFER                                    = 0x8D41    # VERSION_3_0 / ARB_fbo
+       RENDERBUFFER_EXT                                = 0x8D41
+       RENDERBUFFER_WIDTH                              = 0x8D42    # VERSION_3_0 / ARB_fbo
+       RENDERBUFFER_WIDTH_EXT                          = 0x8D42
+       RENDERBUFFER_HEIGHT                             = 0x8D43    # VERSION_3_0 / ARB_fbo
+       RENDERBUFFER_HEIGHT_EXT                         = 0x8D43
+       RENDERBUFFER_INTERNAL_FORMAT                    = 0x8D44    # VERSION_3_0 / ARB_fbo
+       RENDERBUFFER_INTERNAL_FORMAT_EXT                = 0x8D44
+# 0x8D45 unused (reserved for STENCIL_INDEX_EXT, but now use core STENCIL_INDEX instead)
+       STENCIL_INDEX1                                  = 0x8D46    # VERSION_3_0 / ARB_fbo
+       STENCIL_INDEX1_EXT                              = 0x8D46
+       STENCIL_INDEX4                                  = 0x8D47    # VERSION_3_0 / ARB_fbo
+       STENCIL_INDEX4_EXT                              = 0x8D47
+       STENCIL_INDEX8                                  = 0x8D48    # VERSION_3_0 / ARB_fbo
+       STENCIL_INDEX8_EXT                              = 0x8D48
+       STENCIL_INDEX16                                 = 0x8D49    # VERSION_3_0 / ARB_fbo
+       STENCIL_INDEX16_EXT                             = 0x8D49
+# 0x8D4A-0x8D4D reserved for additional stencil formats
+# Added 2005/05/31 in revision #113 of the extension:
+       RENDERBUFFER_RED_SIZE                           = 0x8D50    # VERSION_3_0 / ARB_fbo
+       RENDERBUFFER_RED_SIZE_EXT                       = 0x8D50
+       RENDERBUFFER_GREEN_SIZE                         = 0x8D51    # VERSION_3_0 / ARB_fbo
+       RENDERBUFFER_GREEN_SIZE_EXT                     = 0x8D51
+       RENDERBUFFER_BLUE_SIZE                          = 0x8D52    # VERSION_3_0 / ARB_fbo
+       RENDERBUFFER_BLUE_SIZE_EXT                      = 0x8D52
+       RENDERBUFFER_ALPHA_SIZE                         = 0x8D53    # VERSION_3_0 / ARB_fbo
+       RENDERBUFFER_ALPHA_SIZE_EXT                     = 0x8D53
+       RENDERBUFFER_DEPTH_SIZE                         = 0x8D54    # VERSION_3_0 / ARB_fbo
+       RENDERBUFFER_DEPTH_SIZE_EXT                     = 0x8D54
+       RENDERBUFFER_STENCIL_SIZE                       = 0x8D55    # VERSION_3_0 / ARB_fbo
+       RENDERBUFFER_STENCIL_SIZE_EXT                   = 0x8D55
+
+# Aliases EXT_framebuffer_object enum above
+# @@@??? does this appear in OES_texture3D, or OES_framebuffer_object?
+# extension spec & gl2ext.h disagree!
+OES_texture3D enum: (OpenGL ES only; additional; see above)
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES   = 0x8CD4
+
+# Aliases EXT_framebuffer_object enums above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+       FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES          = 0x8CD0
+       FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES          = 0x8CD1
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES        = 0x8CD2
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 0x8CD3
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES   = 0x8CD4
+       FRAMEBUFFER_COMPLETE_OES                        = 0x8CD5
+       FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES           = 0x8CD6
+       FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES   = 0x8CD7
+       FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES           = 0x8CD9
+       FRAMEBUFFER_INCOMPLETE_FORMATS_OES              = 0x8CDA
+       FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES          = 0x8CDB
+       FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES          = 0x8CDC
+       FRAMEBUFFER_UNSUPPORTED_OES                     = 0x8CDD
+       COLOR_ATTACHMENT0_OES                           = 0x8CE0
+       DEPTH_ATTACHMENT_OES                            = 0x8D00
+       STENCIL_ATTACHMENT_OES                          = 0x8D20
+       FRAMEBUFFER_OES                                 = 0x8D40
+       RENDERBUFFER_OES                                = 0x8D41
+       RENDERBUFFER_WIDTH_OES                          = 0x8D42
+       RENDERBUFFER_HEIGHT_OES                         = 0x8D43
+       RENDERBUFFER_INTERNAL_FORMAT_OES                = 0x8D44
+       STENCIL_INDEX1_OES                              = 0x8D46
+       STENCIL_INDEX4_OES                              = 0x8D47
+       STENCIL_INDEX8_OES                              = 0x8D48
+       RENDERBUFFER_RED_SIZE_OES                       = 0x8D50
+       RENDERBUFFER_GREEN_SIZE_OES                     = 0x8D51
+       RENDERBUFFER_BLUE_SIZE_OES                      = 0x8D52
+       RENDERBUFFER_ALPHA_SIZE_OES                     = 0x8D53
+       RENDERBUFFER_DEPTH_SIZE_OES                     = 0x8D54
+       RENDERBUFFER_STENCIL_SIZE_OES                   = 0x8D55
+
+OES_stencil1 enum: (OpenGL ES only; additional; see below)
+       use OES_framebuffer_object STENCIL_INDEX1_OES
+
+OES_stencil4 enum: (OpenGL ES only; additional; see below)
+       use OES_framebuffer_object STENCIL_INDEX4_OES
+
+OES_stencil8 enum: (OpenGL ES only; additional; see below)
+       use OES_framebuffer_object STENCIL_INDEX8_OES
+
+VERSION_3_0 enum:
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+# Added 2006/10/10 in revision #6b of the extension.
+       FRAMEBUFFER_INCOMPLETE_MULTISAMPLE              = 0x8D56    # VERSION_3_0 / ARB_fbo
+       MAX_SAMPLES                                     = 0x8D57    # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_multisample enum: (additional; see above)
+       FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT          = 0x8D56
+       MAX_SAMPLES_EXT                                 = 0x8D57
+
+# 0x8D58-0x8D5F reserved for additional FBO enums
+
+NV_geometry_program4 enum: (additional; see above)
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT        = 0x8CD4
+
+###############################################################################
+
+# Khronos OpenGL ES WG: 0x8D60-0x8D6F
+
+OES_texture_cube_map enum: (OpenGL ES only)
+       TEXTURE_GEN_STR_OES                             = 0x8D60
+
+OES_texture_float enum: (OpenGL ES only)
+       HALF_FLOAT_OES                                  = 0x8D61
+
+OES_vertex_half_float enum: (OpenGL ES only)
+       use OES_texture_float HALF_FLOAT_OES
+
+OES_framebuffer_object enum: (OpenGL ES only)
+       RGB565_OES                                      = 0x8D62
+
+# Khronos_future_use: 0x8D63
+
+OES_compressed_ETC1_RGB8_texture enum: (OpenGL ES only)
+       ETC1_RGB8_OES                                   = 0x8D64
+
+OES_EGL_image_external enum: (OpenGL ES only) (Khronos bug 4621)
+       TEXTURE_EXTERNAL_OES                            = 0x8D65
+       SAMPLER_EXTERNAL_OES                            = 0x8D66
+       TEXTURE_BINDING_EXTERNAL_OES                    = 0x8D67
+       REQUIRED_TEXTURE_IMAGE_UNITS_OES                = 0x8D68
+
+# Khronos_future_use: 0x8D69-0x8D6F
+
+###############################################################################
+
+# NVIDIA: 0x8D70-0x8DEF
+# Reserved per email from Pat Brown 2005/10/13
+
+#@@ separate extensions
+VERSION_3_0 enum:
+EXT_texture_integer enum:
+       RGBA32UI                                        = 0x8D70    # VERSION_3_0
+       RGBA32UI_EXT                                    = 0x8D70
+       RGB32UI                                         = 0x8D71    # VERSION_3_0
+       RGB32UI_EXT                                     = 0x8D71
+       ALPHA32UI_EXT                                   = 0x8D72
+       INTENSITY32UI_EXT                               = 0x8D73
+       LUMINANCE32UI_EXT                               = 0x8D74
+       LUMINANCE_ALPHA32UI_EXT                         = 0x8D75
+       RGBA16UI                                        = 0x8D76    # VERSION_3_0
+       RGBA16UI_EXT                                    = 0x8D76
+       RGB16UI                                         = 0x8D77    # VERSION_3_0
+       RGB16UI_EXT                                     = 0x8D77
+       ALPHA16UI_EXT                                   = 0x8D78
+       INTENSITY16UI_EXT                               = 0x8D79
+       LUMINANCE16UI_EXT                               = 0x8D7A
+       LUMINANCE_ALPHA16UI_EXT                         = 0x8D7B
+       RGBA8UI                                         = 0x8D7C    # VERSION_3_0
+       RGBA8UI_EXT                                     = 0x8D7C
+       RGB8UI                                          = 0x8D7D    # VERSION_3_0
+       RGB8UI_EXT                                      = 0x8D7D
+       ALPHA8UI_EXT                                    = 0x8D7E
+       INTENSITY8UI_EXT                                = 0x8D7F
+       LUMINANCE8UI_EXT                                = 0x8D80
+       LUMINANCE_ALPHA8UI_EXT                          = 0x8D81
+       RGBA32I                                         = 0x8D82    # VERSION_3_0
+       RGBA32I_EXT                                     = 0x8D82
+       RGB32I                                          = 0x8D83    # VERSION_3_0
+       RGB32I_EXT                                      = 0x8D83
+       ALPHA32I_EXT                                    = 0x8D84
+       INTENSITY32I_EXT                                = 0x8D85
+       LUMINANCE32I_EXT                                = 0x8D86
+       LUMINANCE_ALPHA32I_EXT                          = 0x8D87
+       RGBA16I                                         = 0x8D88    # VERSION_3_0
+       RGBA16I_EXT                                     = 0x8D88
+       RGB16I                                          = 0x8D89    # VERSION_3_0
+       RGB16I_EXT                                      = 0x8D89
+       ALPHA16I_EXT                                    = 0x8D8A
+       INTENSITY16I_EXT                                = 0x8D8B
+       LUMINANCE16I_EXT                                = 0x8D8C
+       LUMINANCE_ALPHA16I_EXT                          = 0x8D8D
+       RGBA8I                                          = 0x8D8E    # VERSION_3_0
+       RGBA8I_EXT                                      = 0x8D8E
+       RGB8I                                           = 0x8D8F    # VERSION_3_0
+       RGB8I_EXT                                       = 0x8D8F
+       ALPHA8I_EXT                                     = 0x8D90
+       INTENSITY8I_EXT                                 = 0x8D91
+       LUMINANCE8I_EXT                                 = 0x8D92
+       LUMINANCE_ALPHA8I_EXT                           = 0x8D93
+       RED_INTEGER                                     = 0x8D94    # VERSION_3_0
+       RED_INTEGER_EXT                                 = 0x8D94
+       GREEN_INTEGER                                   = 0x8D95    # VERSION_3_0
+       GREEN_INTEGER_EXT                               = 0x8D95
+       BLUE_INTEGER                                    = 0x8D96    # VERSION_3_0
+       BLUE_INTEGER_EXT                                = 0x8D96
+       ALPHA_INTEGER                                   = 0x8D97    # VERSION_3_0
+       ALPHA_INTEGER_EXT                               = 0x8D97
+       RGB_INTEGER                                     = 0x8D98    # VERSION_3_0
+       RGB_INTEGER_EXT                                 = 0x8D98
+       RGBA_INTEGER                                    = 0x8D99    # VERSION_3_0
+       RGBA_INTEGER_EXT                                = 0x8D99
+       BGR_INTEGER                                     = 0x8D9A    # VERSION_3_0
+       BGR_INTEGER_EXT                                 = 0x8D9A
+       BGRA_INTEGER                                    = 0x8D9B    # VERSION_3_0
+       BGRA_INTEGER_EXT                                = 0x8D9B
+       LUMINANCE_INTEGER_EXT                           = 0x8D9C
+       LUMINANCE_ALPHA_INTEGER_EXT                     = 0x8D9D
+       RGBA_INTEGER_MODE_EXT                           = 0x8D9E
+
+# NV_future_use: 0x8D9F
+
+NV_parameter_buffer_object enum:
+       MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV        = 0x8DA0
+       MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV            = 0x8DA1
+       VERTEX_PROGRAM_PARAMETER_BUFFER_NV              = 0x8DA2
+       GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV            = 0x8DA3
+       FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV            = 0x8DA4
+
+NV_gpu_program4 enum: (additional; see above)
+       MAX_PROGRAM_GENERIC_ATTRIBS_NV                  = 0x8DA5
+       MAX_PROGRAM_GENERIC_RESULTS_NV                  = 0x8DA6
+
+VERSION_3_2 enum:
+       FRAMEBUFFER_ATTACHMENT_LAYERED                  = 0x8DA7
+       FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS            = 0x8DA8
+
+ARB_geometry_shader4 enum: (additional; see below)
+       FRAMEBUFFER_ATTACHMENT_LAYERED_ARB              = 0x8DA7
+       FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB        = 0x8DA8
+       FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB          = 0x8DA9
+
+NV_geometry_program4 enum: (additional; see above)
+       FRAMEBUFFER_ATTACHMENT_LAYERED_EXT              = 0x8DA7
+       FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT        = 0x8DA8
+       FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT          = 0x8DA9
+
+# NV_future_use: 0x8DAA
+
+VERSION_3_0 enum:
+ARB_depth_buffer_float enum: (additional; see above; some values different from NV; note: no ARB suffixes)
+       FLOAT_32_UNSIGNED_INT_24_8_REV                  = 0x8DAD
+
+NV_depth_buffer_float enum:
+       DEPTH_COMPONENT32F_NV                           = 0x8DAB
+       DEPTH32F_STENCIL8_NV                            = 0x8DAC
+       FLOAT_32_UNSIGNED_INT_24_8_REV_NV               = 0x8DAD
+       DEPTH_BUFFER_FLOAT_MODE_NV                      = 0x8DAF
+
+# NV_future_use: 0x8DAE
+# NV_future_use: 0x8DB0-0x8DB8
+
+VERSION_3_0 enum:
+ARB_framebuffer_sRGB enum: (note: no ARB suffixes)
+       FRAMEBUFFER_SRGB                                = 0x8DB9    # VERSION_3_0 / ARB_sRGB
+
+EXT_framebuffer_sRGB enum:
+       FRAMEBUFFER_SRGB_EXT                            = 0x8DB9
+       FRAMEBUFFER_SRGB_CAPABLE_EXT                    = 0x8DBA
+
+VERSION_3_0 enum:
+ARB_texture_compression_rgtc enum: (note: no ARB suffixes)
+       COMPRESSED_RED_RGTC1                            = 0x8DBB    # VERSION_3_0 / ARB_tcrgtc
+       COMPRESSED_SIGNED_RED_RGTC1                     = 0x8DBC    # VERSION_3_0 / ARB_tcrgtc
+       COMPRESSED_RG_RGTC2                             = 0x8DBD    # VERSION_3_0 / ARB_tcrgtc
+       COMPRESSED_SIGNED_RG_RGTC2                      = 0x8DBE    # VERSION_3_0 / ARB_tcrgtc
+
+EXT_texture_compression_rgtc enum:
+       COMPRESSED_RED_RGTC1_EXT                        = 0x8DBB
+       COMPRESSED_SIGNED_RED_RGTC1_EXT                 = 0x8DBC
+       COMPRESSED_RED_GREEN_RGTC2_EXT                  = 0x8DBD
+       COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT           = 0x8DBE
+
+# NV_future_use: 0x8DBF
+
+VERSION_3_0 enum:
+       SAMPLER_1D_ARRAY                                = 0x8DC0    # VERSION_3_0
+       SAMPLER_2D_ARRAY                                = 0x8DC1    # VERSION_3_0
+       SAMPLER_1D_ARRAY_SHADOW                         = 0x8DC3    # VERSION_3_0
+       SAMPLER_2D_ARRAY_SHADOW                         = 0x8DC4    # VERSION_3_0
+       SAMPLER_CUBE_SHADOW                             = 0x8DC5    # VERSION_3_0
+       UNSIGNED_INT_VEC2                               = 0x8DC6    # VERSION_3_0
+       UNSIGNED_INT_VEC3                               = 0x8DC7    # VERSION_3_0
+       UNSIGNED_INT_VEC4                               = 0x8DC8    # VERSION_3_0
+       INT_SAMPLER_1D                                  = 0x8DC9    # VERSION_3_0
+       INT_SAMPLER_2D                                  = 0x8DCA    # VERSION_3_0
+       INT_SAMPLER_3D                                  = 0x8DCB    # VERSION_3_0
+       INT_SAMPLER_CUBE                                = 0x8DCC    # VERSION_3_0
+       INT_SAMPLER_1D_ARRAY                            = 0x8DCE    # VERSION_3_0
+       INT_SAMPLER_2D_ARRAY                            = 0x8DCF    # VERSION_3_0
+       UNSIGNED_INT_SAMPLER_1D                         = 0x8DD1    # VERSION_3_0
+       UNSIGNED_INT_SAMPLER_2D                         = 0x8DD2    # VERSION_3_0
+       UNSIGNED_INT_SAMPLER_3D                         = 0x8DD3    # VERSION_3_0
+       UNSIGNED_INT_SAMPLER_CUBE                       = 0x8DD4    # VERSION_3_0
+       UNSIGNED_INT_SAMPLER_1D_ARRAY                   = 0x8DD6    # VERSION_3_0
+       UNSIGNED_INT_SAMPLER_2D_ARRAY                   = 0x8DD7    # VERSION_3_0
+
+VERSION_3_1 enum: (Promoted from EXT_gpu_shader4 + ARB_texture_rectangle / ARB_uniform_buffer_object)
+       SAMPLER_BUFFER                                  = 0x8DC2    # EXT_gpu_shader4 + ARB_texture_buffer_object
+       INT_SAMPLER_2D_RECT                             = 0x8DCD    # EXT_gpu_shader4 + ARB_texture_rectangle
+       INT_SAMPLER_BUFFER                              = 0x8DD0    # EXT_gpu_shader4 + ARB_texture_buffer_object
+       UNSIGNED_INT_SAMPLER_2D_RECT                    = 0x8DD5    # EXT_gpu_shader4 + ARB_texture_rectangle
+       UNSIGNED_INT_SAMPLER_BUFFER                     = 0x8DD8    # EXT_gpu_shader4 + ARB_texture_buffer_object
+
+EXT_gpu_shader4 enum:
+       SAMPLER_1D_ARRAY_EXT                            = 0x8DC0
+       SAMPLER_2D_ARRAY_EXT                            = 0x8DC1
+       SAMPLER_BUFFER_EXT                              = 0x8DC2
+       SAMPLER_1D_ARRAY_SHADOW_EXT                     = 0x8DC3
+       SAMPLER_2D_ARRAY_SHADOW_EXT                     = 0x8DC4
+       SAMPLER_CUBE_SHADOW_EXT                         = 0x8DC5
+       UNSIGNED_INT_VEC2_EXT                           = 0x8DC6
+       UNSIGNED_INT_VEC3_EXT                           = 0x8DC7
+       UNSIGNED_INT_VEC4_EXT                           = 0x8DC8
+       INT_SAMPLER_1D_EXT                              = 0x8DC9
+       INT_SAMPLER_2D_EXT                              = 0x8DCA
+       INT_SAMPLER_3D_EXT                              = 0x8DCB
+       INT_SAMPLER_CUBE_EXT                            = 0x8DCC
+       INT_SAMPLER_2D_RECT_EXT                         = 0x8DCD
+       INT_SAMPLER_1D_ARRAY_EXT                        = 0x8DCE
+       INT_SAMPLER_2D_ARRAY_EXT                        = 0x8DCF
+       INT_SAMPLER_BUFFER_EXT                          = 0x8DD0
+       UNSIGNED_INT_SAMPLER_1D_EXT                     = 0x8DD1
+       UNSIGNED_INT_SAMPLER_2D_EXT                     = 0x8DD2
+       UNSIGNED_INT_SAMPLER_3D_EXT                     = 0x8DD3
+       UNSIGNED_INT_SAMPLER_CUBE_EXT                   = 0x8DD4
+       UNSIGNED_INT_SAMPLER_2D_RECT_EXT                = 0x8DD5
+       UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT               = 0x8DD6
+       UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT               = 0x8DD7
+       UNSIGNED_INT_SAMPLER_BUFFER_EXT                 = 0x8DD8
+
+VERSION_3_2 enum:
+       GEOMETRY_SHADER                                 = 0x8DD9
+
+ARB_geometry_shader4 enum:
+       GEOMETRY_SHADER_ARB                             = 0x8DD9
+
+EXT_geometry_shader4 enum:
+       GEOMETRY_SHADER_EXT                             = 0x8DD9
+
+ARB_geometry_shader4 enum: (additional; see above)
+       GEOMETRY_VERTICES_OUT_ARB                       = 0x8DDA
+       GEOMETRY_INPUT_TYPE_ARB                         = 0x8DDB
+       GEOMETRY_OUTPUT_TYPE_ARB                        = 0x8DDC
+
+NV_geometry_program4 enum: (additional; see above)
+       GEOMETRY_VERTICES_OUT_EXT                       = 0x8DDA
+       GEOMETRY_INPUT_TYPE_EXT                         = 0x8DDB
+       GEOMETRY_OUTPUT_TYPE_EXT                        = 0x8DDC
+
+ARB_geometry_shader4 enum: (additional; see above)
+       MAX_GEOMETRY_VARYING_COMPONENTS_ARB             = 0x8DDD
+       MAX_VERTEX_VARYING_COMPONENTS_ARB               = 0x8DDE
+       MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB             = 0x8DDF
+       MAX_GEOMETRY_OUTPUT_VERTICES_ARB                = 0x8DE0
+       MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB        = 0x8DE1
+
+VERSION_3_2 enum:
+       MAX_GEOMETRY_UNIFORM_COMPONENTS                 = 0x8DDF
+       MAX_GEOMETRY_OUTPUT_VERTICES                    = 0x8DE0
+       MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS            = 0x8DE1
+
+EXT_geometry_shader4 enum: (additional; see above)
+       MAX_GEOMETRY_VARYING_COMPONENTS_EXT             = 0x8DDD
+       MAX_VERTEX_VARYING_COMPONENTS_EXT               = 0x8DDE
+       MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT             = 0x8DDF
+       MAX_GEOMETRY_OUTPUT_VERTICES_EXT                = 0x8DE0
+       MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT        = 0x8DE1
+
+EXT_bindable_uniform enum:
+       MAX_VERTEX_BINDABLE_UNIFORMS_EXT                = 0x8DE2
+       MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT              = 0x8DE3
+       MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT              = 0x8DE4
+
+# NV_future_use: 0x8DE5-0x8DEC
+
+EXT_bindable_uniform enum: (additional; see above)
+       MAX_BINDABLE_UNIFORM_SIZE_EXT                   = 0x8DED
+       UNIFORM_BUFFER_EXT                              = 0x8DEE
+       UNIFORM_BUFFER_BINDING_EXT                      = 0x8DEF
+
+###############################################################################
+
+# Khronos OpenGL ES WG: 0x8DF0-0x8E0F
+
+# Khronos_future_use: 0x8DF0-0x8DF5
+
+OES_vertex_type_10_10_10_2 enum: (OpenGL ES only)
+       UNSIGNED_INT_10_10_10_2_OES                     = 0x8DF6
+       INT_10_10_10_2_OES                              = 0x8DF7
+
+# Khronos_future_use: 0x8DF8-0x8E0F
+
+###############################################################################
+
+# NVIDIA: 0x8E10-0x8E8F
+# Reserved per email from Michael Gold 2006/8/7
+
+NV_framebuffer_multisample_coverage enum:
+       RENDERBUFFER_COLOR_SAMPLES_NV                   = 0x8E10
+       MAX_MULTISAMPLE_COVERAGE_MODES_NV               = 0x8E11
+       MULTISAMPLE_COVERAGE_MODES_NV                   = 0x8E12
+
+VERSION_3_0 enum:
+       QUERY_WAIT                                      = 0x8E13    # VERSION_3_0
+       QUERY_NO_WAIT                                   = 0x8E14    # VERSION_3_0
+       QUERY_BY_REGION_WAIT                            = 0x8E15    # VERSION_3_0
+       QUERY_BY_REGION_NO_WAIT                         = 0x8E16    # VERSION_3_0
+
+GL_NV_conditional_render enum:
+       QUERY_WAIT_NV                                   = 0x8E13
+       QUERY_NO_WAIT_NV                                = 0x8E14
+       QUERY_BY_REGION_WAIT_NV                         = 0x8E15
+       QUERY_BY_REGION_NO_WAIT_NV                      = 0x8E16
+
+# NV_future_use: 0x8E17-0x8E21
+
+NV_transform_feedback2 enum:
+      TRANSFORM_FEEDBACK_NV                            = 0x8E22
+      TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV              = 0x8E23
+      TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV              = 0x8E24
+      TRANSFORM_FEEDBACK_BINDING_NV                    = 0x8E25
+
+NV_present_video enum:
+       FRAME_NV                                        = 0x8E26
+       FIELDS_NV                                       = 0x8E27
+       CURRENT_TIME_NV                                 = 0x8E28
+       NUM_FILL_STREAMS_NV                             = 0x8E29
+       PRESENT_TIME_NV                                 = 0x8E2A
+       PRESENT_DURATION_NV                             = 0x8E2B
+
+NV_depth_nonlinear enum: (OpenGL ES only)
+       DEPTH_COMPONENT16_NONLINEAR_NV                  = 0x8E2C
+
+EXT_direct_state_access enum:
+       PROGRAM_MATRIX_EXT                              = 0x8E2D
+       TRANSPOSE_PROGRAM_MATRIX_EXT                    = 0x8E2E
+       PROGRAM_MATRIX_STACK_DEPTH_EXT                  = 0x8E2F
+
+# NV_future_use: 0x8E30-0x8E41
+
+EXT_texture_swizzle enum:
+       TEXTURE_SWIZZLE_R_EXT                           = 0x8E42
+       TEXTURE_SWIZZLE_G_EXT                           = 0x8E43
+       TEXTURE_SWIZZLE_B_EXT                           = 0x8E44
+       TEXTURE_SWIZZLE_A_EXT                           = 0x8E45
+       TEXTURE_SWIZZLE_RGBA_EXT                        = 0x8E46
+
+# NV_future_use: 0x8E47-0x8E4B
+
+VERSION_3_2 enum:
+       use ARB_provoking_vertex            QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION
+       use ARB_provoking_vertex            FIRST_VERTEX_CONVENTION
+       use ARB_provoking_vertex            LAST_VERTEX_CONVENTION
+       use ARB_provoking_vertex            PROVOKING_VERTEX
+
+ARB_provoking_vertex enum:
+       QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION        = 0x8E4C
+       FIRST_VERTEX_CONVENTION                         = 0x8E4D
+       LAST_VERTEX_CONVENTION                          = 0x8E4E
+       PROVOKING_VERTEX                                = 0x8E4F
+
+EXT_provoking_vertex enum:
+       QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT    = 0x8E4C
+       FIRST_VERTEX_CONVENTION_EXT                     = 0x8E4D
+       LAST_VERTEX_CONVENTION_EXT                      = 0x8E4E
+       PROVOKING_VERTEX_EXT                            = 0x8E4F
+
+VERSION_3_2 enum:
+       use ARB_texture_multisample         SAMPLE_POSITION
+       use ARB_texture_multisample         SAMPLE_MASK
+       use ARB_texture_multisample         SAMPLE_MASK_VALUE
+       use ARB_texture_multisample         MAX_SAMPLE_MASK_WORDS
+
+ARB_texture_multisample enum:
+       SAMPLE_POSITION                                 = 0x8E50
+       SAMPLE_MASK                                     = 0x8E51
+       SAMPLE_MASK_VALUE                               = 0x8E52
+       MAX_SAMPLE_MASK_WORDS                           = 0x8E59
+
+NV_explicit_multisample enum:
+       SAMPLE_POSITION_NV                              = 0x8E50
+       SAMPLE_MASK_NV                                  = 0x8E51
+       SAMPLE_MASK_VALUE_NV                            = 0x8E52
+       TEXTURE_BINDING_RENDERBUFFER_NV                 = 0x8E53
+       TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV      = 0x8E54
+       TEXTURE_RENDERBUFFER_NV                         = 0x8E55
+       SAMPLER_RENDERBUFFER_NV                         = 0x8E56
+       INT_SAMPLER_RENDERBUFFER_NV                     = 0x8E57
+       UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV            = 0x8E58
+       MAX_SAMPLE_MASK_WORDS_NV                        = 0x8E59
+
+# NV_future_use: 0x8E5A-0x8E5D
+
+ARB_texture_gather enum:
+       MIN_PROGRAM_TEXTURE_GATHER_OFFSET               = 0x8E5E
+       MAX_PROGRAM_TEXTURE_GATHER_OFFSET               = 0x8E5F
+
+# NV_future_use: 0x8E60-0x8E8F
+
+###############################################################################
+
+# QNX: 0x8E90-0x8E9F
+# For GL_QNX_texture_tiling, GL_QNX_complex_polygon, GL_QNX_stippled_lines
+# (Khronos bug 696)
+
+# QNX_future_use: 0x8E90-0x8E9F
+
+###############################################################################
+
+# Imagination Tech.: 0x8EA0-0x8EAF
+
+###############################################################################
+
+# Khronos OpenGL ES WG: 0x8EB0-0x8EBF
+# Assigned for Affie Munshi on 2007/07/20
+
+###############################################################################
+
+# Vincent: 0x8EC0-0x8ECF
+
+###############################################################################
+
+# NVIDIA: 0x8ED0-0x8F4F
+# Assigned for Pat Brown (Khronos bug 3191)
+
+NV_coverage_sample enum: (OpenGL ES only)
+       COVERAGE_COMPONENT_NV                           = 0x8ED0
+       COVERAGE_COMPONENT4_NV                          = 0x8ED1
+       COVERAGE_ATTACHMENT_NV                          = 0x8ED2
+       COVERAGE_BUFFERS_NV                             = 0x8ED3
+       COVERAGE_SAMPLES_NV                             = 0x8ED4
+       COVERAGE_ALL_FRAGMENTS_NV                       = 0x8ED5
+       COVERAGE_EDGE_FRAGMENTS_NV                      = 0x8ED6
+       COVERAGE_AUTOMATIC_NV                           = 0x8ED7
+       COVERAGE_BUFFER_BIT_NV                          = 0x00008000
+
+# NV_future_use: 0x8ED8-0x8F1C
+
+NV_shader_buffer_load enum:
+       BUFFER_GPU_ADDRESS_NV                           = 0x8F1D
+
+NV_vertex_buffer_unified_memory enum:
+       VERTEX_ATTRIB_ARRAY_UNIFIED_NV                  = 0x8F1E
+       ELEMENT_ARRAY_UNIFIED_NV                        = 0x8F1F
+       VERTEX_ATTRIB_ARRAY_ADDRESS_NV                  = 0x8F20
+       VERTEX_ARRAY_ADDRESS_NV                         = 0x8F21
+       NORMAL_ARRAY_ADDRESS_NV                         = 0x8F22
+       COLOR_ARRAY_ADDRESS_NV                          = 0x8F23
+       INDEX_ARRAY_ADDRESS_NV                          = 0x8F24
+       TEXTURE_COORD_ARRAY_ADDRESS_NV                  = 0x8F25
+       EDGE_FLAG_ARRAY_ADDRESS_NV                      = 0x8F26
+       SECONDARY_COLOR_ARRAY_ADDRESS_NV                = 0x8F27
+       FOG_COORD_ARRAY_ADDRESS_NV                      = 0x8F28
+       ELEMENT_ARRAY_ADDRESS_NV                        = 0x8F29
+       VERTEX_ATTRIB_ARRAY_LENGTH_NV                   = 0x8F2A
+       VERTEX_ARRAY_LENGTH_NV                          = 0x8F2B
+       NORMAL_ARRAY_LENGTH_NV                          = 0x8F2C
+       COLOR_ARRAY_LENGTH_NV                           = 0x8F2D
+       INDEX_ARRAY_LENGTH_NV                           = 0x8F2E
+       TEXTURE_COORD_ARRAY_LENGTH_NV                   = 0x8F2F
+       EDGE_FLAG_ARRAY_LENGTH_NV                       = 0x8F30
+       SECONDARY_COLOR_ARRAY_LENGTH_NV                 = 0x8F31
+       FOG_COORD_ARRAY_LENGTH_NV                       = 0x8F32
+       ELEMENT_ARRAY_LENGTH_NV                         = 0x8F33
+
+NV_shader_buffer_load enum: (additional; see above)
+       GPU_ADDRESS_NV                                  = 0x8F34
+       MAX_SHADER_BUFFER_ADDRESS_NV                    = 0x8F35
+
+ARB_copy_buffer enum:
+       COPY_READ_BUFFER                                = 0x8F36
+       COPY_WRITE_BUFFER                               = 0x8F37
+
+VERSION_3_1 enum:
+       use ARB_copy_buffer                 COPY_READ_BUFFER
+       use ARB_copy_buffer                 COPY_WRITE_BUFFER
+
+# NVIDIA_future_use: 0x8F38-0x8F4F
+
+###############################################################################
+
+# 3Dlabs: 0x8F50-0x8F5F
+# Assigned for Jon Kennedy (Khronos public bug 75)
+
+###############################################################################
+
+# ARM: 0x8F60-0x8F6F
+# Assigned for Remi Pedersen (Khronos bug 3745)
+
+###############################################################################
+
+# HI Corp: 0x8F70-0x8F7F
+# Assigned for Mark Callow (Khronos bug 4055)
+
+###############################################################################
+
+# Zebra Imaging: 0x8F80-0x8F8F
+# Assigned for Mike Weiblen (Khronos public bug 91)
+
+###############################################################################
+
+# OpenGL ARB: 0x8F90-0x8F9F (SNORM textures, 3.1 primitive restart server state)
+
+VERSION_3_1 enum:
+       RED_SNORM                                       = 0x8F90    # VERSION_3_1
+       RG_SNORM                                        = 0x8F91    # VERSION_3_1
+       RGB_SNORM                                       = 0x8F92    # VERSION_3_1
+       RGBA_SNORM                                      = 0x8F93    # VERSION_3_1
+       R8_SNORM                                        = 0x8F94    # VERSION_3_1
+       RG8_SNORM                                       = 0x8F95    # VERSION_3_1
+       RGB8_SNORM                                      = 0x8F96    # VERSION_3_1
+       RGBA8_SNORM                                     = 0x8F97    # VERSION_3_1
+       R16_SNORM                                       = 0x8F98    # VERSION_3_1
+       RG16_SNORM                                      = 0x8F99    # VERSION_3_1
+       RGB16_SNORM                                     = 0x8F9A    # VERSION_3_1
+       RGBA16_SNORM                                    = 0x8F9B    # VERSION_3_1
+       SIGNED_NORMALIZED                               = 0x8F9C    # VERSION_3_1
+       PRIMITIVE_RESTART                               = 0x8F9D    # Different from NV_primitive_restart value
+       PRIMITIVE_RESTART_INDEX                         = 0x8F9E    # Different from NV_primitive_restart value
+
+ARB_texture_gather enum: (additional; see above)
+       MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS           = 0x8F9F
+
+###############################################################################
+
+# Qualcomm: 0x8FA0-0x8FBF
+# Assigned for Maurice Ribble (Khronos bug 4512)
+
+QCOM_driver_control enum: (OpenGL ES only)
+       PERFMON_GLOBAL_MODE_QCOM                        = 0x8FA0
+
+# QCOM_future_use: 0x8FA1-0x8FBF
+
+###############################################################################
+
+# Vivante: 0x8FC0-0x8FDF
+# Assigned for Frido Garritsen (Khronos bug 4526)
+
+###############################################################################
+
+# NVIDIA: 0x8FE0-0x8FFF
+# Assigned for Pat Brown (Khronos bug 4935)
+
+# NV_future_use: 0x8FE0-0x8FFF
+
+###############################################################################
+
+# AMD: 0x9000-0x901F
+# Assigned for Bill Licea-Kane
+
+AMD_vertex_shader_tesselator enum:
+       SAMPLER_BUFFER_AMD                              = 0x9001
+       INT_SAMPLER_BUFFER_AMD                          = 0x9002
+       UNSIGNED_INT_SAMPLER_BUFFER_AMD                 = 0x9003
+       TESSELLATION_MODE_AMD                           = 0x9004
+       TESSELLATION_FACTOR_AMD                         = 0x9005
+       DISCRETE_AMD                                    = 0x9006
+       CONTINUOUS_AMD                                  = 0x9007
+
+# AMD_future_use: 0x9008
+
+ARB_texture_cube_map_array enum:
+       TEXTURE_CUBE_MAP_ARRAY                          = 0x9009
+       TEXTURE_BINDING_CUBE_MAP_ARRAY                  = 0x900A
+       PROXY_TEXTURE_CUBE_MAP_ARRAY                    = 0x900B
+       SAMPLER_CUBE_MAP_ARRAY                          = 0x900C
+       SAMPLER_CUBE_MAP_ARRAY_SHADOW                   = 0x900D
+       INT_SAMPLER_CUBE_MAP_ARRAY                      = 0x900E
+       UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY             = 0x900F
+
+EXT_texture_snorm enum:
+       ALPHA_SNORM                                     = 0x9010
+       LUMINANCE_SNORM                                 = 0x9011
+       LUMINANCE_ALPHA_SNORM                           = 0x9012
+       INTENSITY_SNORM                                 = 0x9013
+       ALPHA8_SNORM                                    = 0x9014
+       LUMINANCE8_SNORM                                = 0x9015
+       LUMINANCE8_ALPHA8_SNORM                         = 0x9016
+       INTENSITY8_SNORM                                = 0x9017
+       ALPHA16_SNORM                                   = 0x9018
+       LUMINANCE16_SNORM                               = 0x9019
+       LUMINANCE16_ALPHA16_SNORM                       = 0x901A
+       INTENSITY16_SNORM                               = 0x901B
+
+# AMD_future_use: 0x901C-0x901F
+
+###############################################################################
+
+# NVIDIA: 0x9020-0x90FF
+# Assigned for Pat Brown (Khronos bug 4935)
+
+NV_video_capture enum:
+         VIDEO_BUFFER_NV                                 = 0x9020
+         VIDEO_BUFFER_BINDING_NV                         = 0x9021
+         FIELD_UPPER_NV                                  = 0x9022
+         FIELD_LOWER_NV                                  = 0x9023
+         NUM_VIDEO_CAPTURE_STREAMS_NV                    = 0x9024
+         NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV             = 0x9025
+         VIDEO_CAPTURE_TO_422_SUPPORTED_NV               = 0x9026
+         LAST_VIDEO_CAPTURE_STATUS_NV                    = 0x9027
+         VIDEO_BUFFER_PITCH_NV                           = 0x9028
+         VIDEO_COLOR_CONVERSION_MATRIX_NV                = 0x9029
+         VIDEO_COLOR_CONVERSION_MAX_NV                   = 0x902A
+         VIDEO_COLOR_CONVERSION_MIN_NV                   = 0x902B
+         VIDEO_COLOR_CONVERSION_OFFSET_NV                = 0x902C
+         VIDEO_BUFFER_INTERNAL_FORMAT_NV                 = 0x902D
+         PARTIAL_SUCCESS_NV                              = 0x902E
+         SUCCESS_NV                                      = 0x902F
+         FAILURE_NV                                      = 0x9030
+         YCBYCR8_422_NV                                  = 0x9031
+         YCBAYCR8A_4224_NV                               = 0x9032
+         Z6Y10Z6CB10Z6Y10Z6CR10_422_NV                   = 0x9033
+         Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV        = 0x9034
+         Z4Y12Z4CB12Z4Y12Z4CR12_422_NV                   = 0x9035
+         Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV        = 0x9036
+         Z4Y12Z4CB12Z4CR12_444_NV                        = 0x9037
+         VIDEO_CAPTURE_FRAME_WIDTH_NV                    = 0x9038
+         VIDEO_CAPTURE_FRAME_HEIGHT_NV                   = 0x9039
+         VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV             = 0x903A
+         VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV             = 0x903B
+         VIDEO_CAPTURE_SURFACE_ORIGIN_NV                 = 0x903C
+
+# NV_future_use: 0x903D-0x90FF
+
+###############################################################################
+
+# OpenGL ARB: 0x9100-0x912F
+
+VERSION_3_2 enum:
+       use ARB_texture_multisample         TEXTURE_2D_MULTISAMPLE
+       use ARB_texture_multisample         PROXY_TEXTURE_2D_MULTISAMPLE
+       use ARB_texture_multisample         TEXTURE_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         TEXTURE_BINDING_2D_MULTISAMPLE
+       use ARB_texture_multisample         TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         TEXTURE_SAMPLES
+       use ARB_texture_multisample         TEXTURE_FIXED_SAMPLE_LOCATIONS
+       use ARB_texture_multisample         SAMPLER_2D_MULTISAMPLE
+       use ARB_texture_multisample         INT_SAMPLER_2D_MULTISAMPLE
+       use ARB_texture_multisample         UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE
+       use ARB_texture_multisample         SAMPLER_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         MAX_COLOR_TEXTURE_SAMPLES
+       use ARB_texture_multisample         MAX_DEPTH_TEXTURE_SAMPLES
+       use ARB_texture_multisample         MAX_INTEGER_SAMPLES
+
+ARB_texture_multisample enum:
+       TEXTURE_2D_MULTISAMPLE                          = 0x9100
+       PROXY_TEXTURE_2D_MULTISAMPLE                    = 0x9101
+       TEXTURE_2D_MULTISAMPLE_ARRAY                    = 0x9102
+       PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY              = 0x9103
+       TEXTURE_BINDING_2D_MULTISAMPLE                  = 0x9104
+       TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY            = 0x9105
+       TEXTURE_SAMPLES                                 = 0x9106
+       TEXTURE_FIXED_SAMPLE_LOCATIONS                  = 0x9107
+       SAMPLER_2D_MULTISAMPLE                          = 0x9108
+       INT_SAMPLER_2D_MULTISAMPLE                      = 0x9109
+       UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE             = 0x910A
+       SAMPLER_2D_MULTISAMPLE_ARRAY                    = 0x910B
+       INT_SAMPLER_2D_MULTISAMPLE_ARRAY                = 0x910C
+       UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY       = 0x910D
+       MAX_COLOR_TEXTURE_SAMPLES                       = 0x910E
+       MAX_DEPTH_TEXTURE_SAMPLES                       = 0x910F
+       MAX_INTEGER_SAMPLES                             = 0x9110
+
+VERSION_3_2 enum:
+       use ARB_sync                        MAX_SERVER_WAIT_TIMEOUT
+       use ARB_sync                        OBJECT_TYPE
+       use ARB_sync                        SYNC_CONDITION
+       use ARB_sync                        SYNC_STATUS
+       use ARB_sync                        SYNC_FLAGS
+       use ARB_sync                        SYNC_FENCE
+       use ARB_sync                        SYNC_GPU_COMMANDS_COMPLETE
+       use ARB_sync                        UNSIGNALED
+       use ARB_sync                        SIGNALED
+       use ARB_sync                        ALREADY_SIGNALED
+       use ARB_sync                        TIMEOUT_EXPIRED
+       use ARB_sync                        CONDITION_SATISFIED
+       use ARB_sync                        WAIT_FAILED
+       use ARB_sync                        TIMEOUT_IGNORED
+       use ARB_sync                        SYNC_FLUSH_COMMANDS_BIT
+       use ARB_sync                        TIMEOUT_IGNORED
+
+ARB_sync enum:
+       MAX_SERVER_WAIT_TIMEOUT                         = 0x9111
+       OBJECT_TYPE                                     = 0x9112
+       SYNC_CONDITION                                  = 0x9113
+       SYNC_STATUS                                     = 0x9114
+       SYNC_FLAGS                                      = 0x9115
+       SYNC_FENCE                                      = 0x9116
+       SYNC_GPU_COMMANDS_COMPLETE                      = 0x9117
+       UNSIGNALED                                      = 0x9118
+       SIGNALED                                        = 0x9119
+       ALREADY_SIGNALED                                = 0x911A
+       TIMEOUT_EXPIRED                                 = 0x911B
+       CONDITION_SATISFIED                             = 0x911C
+       WAIT_FAILED                                     = 0x911D
+       SYNC_FLUSH_COMMANDS_BIT                         = 0x00000001
+       TIMEOUT_IGNORED                                 = 0xFFFFFFFFFFFFFFFFull
+
+VERSION_3_0 enum:
+       BUFFER_ACCESS_FLAGS                             = 0x911F
+       BUFFER_MAP_LENGTH                               = 0x9120
+       BUFFER_MAP_OFFSET                               = 0x9121
+
+VERSION_3_2 enum:
+       MAX_VERTEX_OUTPUT_COMPONENTS                    = 0x9122
+       MAX_GEOMETRY_INPUT_COMPONENTS                   = 0x9123
+       MAX_GEOMETRY_OUTPUT_COMPONENTS                  = 0x9124
+       MAX_FRAGMENT_INPUT_COMPONENTS                   = 0x9125
+
+VERSION_3_2 enum:
+       CONTEXT_CORE_PROFILE_BIT                        = 0x00000001
+       CONTEXT_COMPATIBILITY_PROFILE_BIT               = 0x00000002
+       CONTEXT_PROFILE_MASK                            = 0x9126
+
+# ARB_future_use: 0x9127-0x912F
+
+###############################################################################
+
+# Imagination Tech.: 0x9130-0x913F (Khronos bug 882)
+
+IMG_program_binary enum: (OpenGL ES only)
+       SGX_PROGRAM_BINARY_IMG                          = 0x9130
+
+# IMG_future_use: 0x9131-0x9132
+
+IMG_multisampled_render_to_texture enum: (OpenGL ES only)
+       RENDERBUFFER_SAMPLES_IMG                        = 0x9133
+       FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG          = 0x9134
+       MAX_SAMPLES_IMG                                 = 0x9135
+       TEXTURE_SAMPLES_IMG                             = 0x9136
+
+# IMG_future_use: 0x9137-0x913F
+
+###############################################################################
+
+# AMD: 0x9140-0x91BF (Khronos bugs 5899, 6004)
+
+# AMD_future_use: 0x9140-0x91BF
+# AMD_future_use: 0x91C0-0x923F
+
+###############################################################################
+### Please remember that new enumerant allocations must be obtained by request
+### to the Khronos API registrar (see comments at the top of this file)
+### File requests in the Khronos Bugzilla, OpenGL project, Registry component.
+###############################################################################
+
+# Any_vendor_future_use: 0x9140-0xFFFF
+#
+#   This range must be the last range in the file.  To generate a new
+#   range, allocate multiples of 16 from the beginning of the
+#   Any_vendor_future_use range and update enum.spec
+
+# (NOTE: first fill the gap from 0x8FE0-0x8FFF before proceeding here)
+
+###############################################################################
+
+# ARB:   100000-100999 (GLU enumerants only)
+# ARB:   101000-101999 (Conformance tests only)
+
+###############################################################################
+
+# IBM:   103000-103999
+#      CULL_VERTEX_IBM                                 = 103050
+#      VERTEX_ARRAY_LIST_IBM                           = 103070
+#      NORMAL_ARRAY_LIST_IBM                           = 103071
+#      COLOR_ARRAY_LIST_IBM                            = 103072
+#      INDEX_ARRAY_LIST_IBM                            = 103073
+#      TEXTURE_COORD_ARRAY_LIST_IBM                    = 103074
+#      EDGE_FLAG_ARRAY_LIST_IBM                        = 103075
+#      FOG_COORDINATE_ARRAY_LIST_IBM                   = 103076
+#      SECONDARY_COLOR_ARRAY_LIST_IBM                  = 103077
+#      VERTEX_ARRAY_LIST_STRIDE_IBM                    = 103080
+#      NORMAL_ARRAY_LIST_STRIDE_IBM                    = 103081
+#      COLOR_ARRAY_LIST_STRIDE_IBM                     = 103082
+#      INDEX_ARRAY_LIST_STRIDE_IBM                     = 103083
+#      TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM             = 103084
+#      EDGE_FLAG_ARRAY_LIST_STRIDE_IBM                 = 103085
+#      FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM            = 103086
+#      SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM           = 103087
+
+###############################################################################
+
+# NEC:   104000-104999
+# Compaq: 105000-105999 (Compaq was acquired by HP)
+# KPC:   106000-106999 (Kubota is out of business)
+# PGI:   107000-107999 (Portable was acquired by Template Graphics)
+# E&S:   108000-108999
+
+###############################################################################
diff --git a/src/glx/apple/specs/enumext.spec b/src/glx/apple/specs/enumext.spec
new file mode 100644 (file)
index 0000000..6302ed4
--- /dev/null
@@ -0,0 +1,6542 @@
+# enumext.spec - list of GL enumerants for glext.h header
+#
+# $Revision: 10971 $ on $Date: 2010-04-09 02:45:33 -0700 (Fri, 09 Apr 2010) $
+
+# This is derived from the master GL enumerant registry (enum.spec).
+#
+# Unlike enum.spec, enumext.spec is
+#   (1) Grouped by GL core version or extension number
+#   (2) While it includes all extension and core enumerants, the
+#      generator scripts for glext.h leave out VERSION_1_1
+#      tokens since it's assumed all <gl.h> today support at least
+#      OpenGL 1.1
+#   (3) Has no 'Extensions' section, since enums are always
+#      conditionally protected against multiple definition
+#      by glextenum.pl.
+#   (4) Is processed by glextenum.pl, which has evolved
+#      from enum.pl - should merge back into one script.
+
+# The release number encoded into glext.h is now defined in
+# glextrelease.txt.
+
+###############################################################################
+#
+# OpenGL 1.0/1.1 enums (there is no VERSION_1_0 token)
+#
+###############################################################################
+
+VERSION_1_1 enum:
+passthru: /* AttribMask */
+       DEPTH_BUFFER_BIT                                = 0x00000100    # AttribMask
+       STENCIL_BUFFER_BIT                              = 0x00000400    # AttribMask
+       COLOR_BUFFER_BIT                                = 0x00004000    # AttribMask
+passthru: /* Boolean */
+       FALSE                                           = 0             # Boolean
+       TRUE                                            = 1             # Boolean
+passthru: /* BeginMode */
+       POINTS                                          = 0x0000        # BeginMode
+       LINES                                           = 0x0001        # BeginMode
+       LINE_LOOP                                       = 0x0002        # BeginMode
+       LINE_STRIP                                      = 0x0003        # BeginMode
+       TRIANGLES                                       = 0x0004        # BeginMode
+       TRIANGLE_STRIP                                  = 0x0005        # BeginMode
+       TRIANGLE_FAN                                    = 0x0006        # BeginMode
+passthru: /* AlphaFunction */
+       NEVER                                           = 0x0200        # AlphaFunction
+       LESS                                            = 0x0201        # AlphaFunction
+       EQUAL                                           = 0x0202        # AlphaFunction
+       LEQUAL                                          = 0x0203        # AlphaFunction
+       GREATER                                         = 0x0204        # AlphaFunction
+       NOTEQUAL                                        = 0x0205        # AlphaFunction
+       GEQUAL                                          = 0x0206        # AlphaFunction
+       ALWAYS                                          = 0x0207        # AlphaFunction
+passthru: /* BlendingFactorDest */
+       ZERO                                            = 0             # BlendingFactorDest
+       ONE                                             = 1             # BlendingFactorDest
+       SRC_COLOR                                       = 0x0300        # BlendingFactorDest
+       ONE_MINUS_SRC_COLOR                             = 0x0301        # BlendingFactorDest
+       SRC_ALPHA                                       = 0x0302        # BlendingFactorDest
+       ONE_MINUS_SRC_ALPHA                             = 0x0303        # BlendingFactorDest
+       DST_ALPHA                                       = 0x0304        # BlendingFactorDest
+       ONE_MINUS_DST_ALPHA                             = 0x0305        # BlendingFactorDest
+passthru: /* BlendingFactorSrc */
+       DST_COLOR                                       = 0x0306        # BlendingFactorSrc
+       ONE_MINUS_DST_COLOR                             = 0x0307        # BlendingFactorSrc
+       SRC_ALPHA_SATURATE                              = 0x0308        # BlendingFactorSrc
+passthru: /* DrawBufferMode */
+       NONE                                            = 0             # DrawBufferMode
+       FRONT_LEFT                                      = 0x0400        # DrawBufferMode
+       FRONT_RIGHT                                     = 0x0401        # DrawBufferMode
+       BACK_LEFT                                       = 0x0402        # DrawBufferMode
+       BACK_RIGHT                                      = 0x0403        # DrawBufferMode
+       FRONT                                           = 0x0404        # DrawBufferMode
+       BACK                                            = 0x0405        # DrawBufferMode
+       LEFT                                            = 0x0406        # DrawBufferMode
+       RIGHT                                           = 0x0407        # DrawBufferMode
+       FRONT_AND_BACK                                  = 0x0408        # DrawBufferMode
+passthru: /* ErrorCode */
+       NO_ERROR                                        = 0             # ErrorCode
+       INVALID_ENUM                                    = 0x0500        # ErrorCode
+       INVALID_VALUE                                   = 0x0501        # ErrorCode
+       INVALID_OPERATION                               = 0x0502        # ErrorCode
+       OUT_OF_MEMORY                                   = 0x0505        # ErrorCode
+passthru: /* FrontFaceDirection */
+       CW                                              = 0x0900        # FrontFaceDirection
+       CCW                                             = 0x0901        # FrontFaceDirection
+passthru: /* GetPName */
+       POINT_SIZE                                      = 0x0B11 # 1 F  # GetPName
+       POINT_SIZE_RANGE                                = 0x0B12 # 2 F  # GetPName
+       POINT_SIZE_GRANULARITY                          = 0x0B13 # 1 F  # GetPName
+       LINE_SMOOTH                                     = 0x0B20 # 1 I  # GetPName
+       LINE_WIDTH                                      = 0x0B21 # 1 F  # GetPName
+       LINE_WIDTH_RANGE                                = 0x0B22 # 2 F  # GetPName
+       LINE_WIDTH_GRANULARITY                          = 0x0B23 # 1 F  # GetPName
+       POLYGON_SMOOTH                                  = 0x0B41 # 1 I  # GetPName
+       CULL_FACE                                       = 0x0B44 # 1 I  # GetPName
+       CULL_FACE_MODE                                  = 0x0B45 # 1 I  # GetPName
+       FRONT_FACE                                      = 0x0B46 # 1 I  # GetPName
+       DEPTH_RANGE                                     = 0x0B70 # 2 F  # GetPName
+       DEPTH_TEST                                      = 0x0B71 # 1 I  # GetPName
+       DEPTH_WRITEMASK                                 = 0x0B72 # 1 I  # GetPName
+       DEPTH_CLEAR_VALUE                               = 0x0B73 # 1 F  # GetPName
+       DEPTH_FUNC                                      = 0x0B74 # 1 I  # GetPName
+       STENCIL_TEST                                    = 0x0B90 # 1 I  # GetPName
+       STENCIL_CLEAR_VALUE                             = 0x0B91 # 1 I  # GetPName
+       STENCIL_FUNC                                    = 0x0B92 # 1 I  # GetPName
+       STENCIL_VALUE_MASK                              = 0x0B93 # 1 I  # GetPName
+       STENCIL_FAIL                                    = 0x0B94 # 1 I  # GetPName
+       STENCIL_PASS_DEPTH_FAIL                         = 0x0B95 # 1 I  # GetPName
+       STENCIL_PASS_DEPTH_PASS                         = 0x0B96 # 1 I  # GetPName
+       STENCIL_REF                                     = 0x0B97 # 1 I  # GetPName
+       STENCIL_WRITEMASK                               = 0x0B98 # 1 I  # GetPName
+       VIEWPORT                                        = 0x0BA2 # 4 I  # GetPName
+       DITHER                                          = 0x0BD0 # 1 I  # GetPName
+       BLEND_DST                                       = 0x0BE0 # 1 I  # GetPName
+       BLEND_SRC                                       = 0x0BE1 # 1 I  # GetPName
+       BLEND                                           = 0x0BE2 # 1 I  # GetPName
+       LOGIC_OP_MODE                                   = 0x0BF0 # 1 I  # GetPName
+       COLOR_LOGIC_OP                                  = 0x0BF2 # 1 I  # GetPName
+       DRAW_BUFFER                                     = 0x0C01 # 1 I  # GetPName
+       READ_BUFFER                                     = 0x0C02 # 1 I  # GetPName
+       SCISSOR_BOX                                     = 0x0C10 # 4 I  # GetPName
+       SCISSOR_TEST                                    = 0x0C11 # 1 I  # GetPName
+       COLOR_CLEAR_VALUE                               = 0x0C22 # 4 F  # GetPName
+       COLOR_WRITEMASK                                 = 0x0C23 # 4 I  # GetPName
+       DOUBLEBUFFER                                    = 0x0C32 # 1 I  # GetPName
+       STEREO                                          = 0x0C33 # 1 I  # GetPName
+       LINE_SMOOTH_HINT                                = 0x0C52 # 1 I  # GetPName
+       POLYGON_SMOOTH_HINT                             = 0x0C53 # 1 I  # GetPName
+       UNPACK_SWAP_BYTES                               = 0x0CF0 # 1 I  # GetPName
+       UNPACK_LSB_FIRST                                = 0x0CF1 # 1 I  # GetPName
+       UNPACK_ROW_LENGTH                               = 0x0CF2 # 1 I  # GetPName
+       UNPACK_SKIP_ROWS                                = 0x0CF3 # 1 I  # GetPName
+       UNPACK_SKIP_PIXELS                              = 0x0CF4 # 1 I  # GetPName
+       UNPACK_ALIGNMENT                                = 0x0CF5 # 1 I  # GetPName
+       PACK_SWAP_BYTES                                 = 0x0D00 # 1 I  # GetPName
+       PACK_LSB_FIRST                                  = 0x0D01 # 1 I  # GetPName
+       PACK_ROW_LENGTH                                 = 0x0D02 # 1 I  # GetPName
+       PACK_SKIP_ROWS                                  = 0x0D03 # 1 I  # GetPName
+       PACK_SKIP_PIXELS                                = 0x0D04 # 1 I  # GetPName
+       PACK_ALIGNMENT                                  = 0x0D05 # 1 I  # GetPName
+       MAX_TEXTURE_SIZE                                = 0x0D33 # 1 I  # GetPName
+       MAX_VIEWPORT_DIMS                               = 0x0D3A # 2 F  # GetPName
+       SUBPIXEL_BITS                                   = 0x0D50 # 1 I  # GetPName
+       TEXTURE_1D                                      = 0x0DE0 # 1 I  # GetPName
+       TEXTURE_2D                                      = 0x0DE1 # 1 I  # GetPName
+       POLYGON_OFFSET_UNITS                            = 0x2A00 # 1 F  # GetPName
+       POLYGON_OFFSET_POINT                            = 0x2A01 # 1 I  # GetPName
+       POLYGON_OFFSET_LINE                             = 0x2A02 # 1 I  # GetPName
+       POLYGON_OFFSET_FILL                             = 0x8037 # 1 I  # GetPName
+       POLYGON_OFFSET_FACTOR                           = 0x8038 # 1 F  # GetPName
+       TEXTURE_BINDING_1D                              = 0x8068 # 1 I  # GetPName
+       TEXTURE_BINDING_2D                              = 0x8069 # 1 I  # GetPName
+passthru: /* GetTextureParameter */
+       TEXTURE_WIDTH                                   = 0x1000        # GetTextureParameter
+       TEXTURE_HEIGHT                                  = 0x1001        # GetTextureParameter
+       TEXTURE_INTERNAL_FORMAT                         = 0x1003        # GetTextureParameter
+       TEXTURE_BORDER_COLOR                            = 0x1004        # GetTextureParameter
+       TEXTURE_RED_SIZE                                = 0x805C        # GetTextureParameter
+       TEXTURE_GREEN_SIZE                              = 0x805D        # GetTextureParameter
+       TEXTURE_BLUE_SIZE                               = 0x805E        # GetTextureParameter
+       TEXTURE_ALPHA_SIZE                              = 0x805F        # GetTextureParameter
+passthru: /* HintMode */
+       DONT_CARE                                       = 0x1100        # HintMode
+       FASTEST                                         = 0x1101        # HintMode
+       NICEST                                          = 0x1102        # HintMode
+passthru: /* DataType */
+       BYTE                                            = 0x1400        # DataType
+       UNSIGNED_BYTE                                   = 0x1401        # DataType
+       SHORT                                           = 0x1402        # DataType
+       UNSIGNED_SHORT                                  = 0x1403        # DataType
+       INT                                             = 0x1404        # DataType
+       UNSIGNED_INT                                    = 0x1405        # DataType
+       FLOAT                                           = 0x1406        # DataType
+       DOUBLE                                          = 0x140A        # DataType
+passthru: /* LogicOp */
+       CLEAR                                           = 0x1500        # LogicOp
+       AND                                             = 0x1501        # LogicOp
+       AND_REVERSE                                     = 0x1502        # LogicOp
+       COPY                                            = 0x1503        # LogicOp
+       AND_INVERTED                                    = 0x1504        # LogicOp
+       NOOP                                            = 0x1505        # LogicOp
+       XOR                                             = 0x1506        # LogicOp
+       OR                                              = 0x1507        # LogicOp
+       NOR                                             = 0x1508        # LogicOp
+       EQUIV                                           = 0x1509        # LogicOp
+       INVERT                                          = 0x150A        # LogicOp
+       OR_REVERSE                                      = 0x150B        # LogicOp
+       COPY_INVERTED                                   = 0x150C        # LogicOp
+       OR_INVERTED                                     = 0x150D        # LogicOp
+       NAND                                            = 0x150E        # LogicOp
+       SET                                             = 0x150F        # LogicOp
+passthru: /* MatrixMode (for gl3.h, FBO attachment type) */
+       TEXTURE                                         = 0x1702        # MatrixMode
+passthru: /* PixelCopyType */
+       COLOR                                           = 0x1800        # PixelCopyType
+       DEPTH                                           = 0x1801        # PixelCopyType
+       STENCIL                                         = 0x1802        # PixelCopyType
+passthru: /* PixelFormat */
+       STENCIL_INDEX                                   = 0x1901        # PixelFormat
+       DEPTH_COMPONENT                                 = 0x1902        # PixelFormat
+       RED                                             = 0x1903        # PixelFormat
+       GREEN                                           = 0x1904        # PixelFormat
+       BLUE                                            = 0x1905        # PixelFormat
+       ALPHA                                           = 0x1906        # PixelFormat
+       RGB                                             = 0x1907        # PixelFormat
+       RGBA                                            = 0x1908        # PixelFormat
+passthru: /* PolygonMode */
+       POINT                                           = 0x1B00        # PolygonMode
+       LINE                                            = 0x1B01        # PolygonMode
+       FILL                                            = 0x1B02        # PolygonMode
+passthru: /* StencilOp */
+       KEEP                                            = 0x1E00        # StencilOp
+       REPLACE                                         = 0x1E01        # StencilOp
+       INCR                                            = 0x1E02        # StencilOp
+       DECR                                            = 0x1E03        # StencilOp
+passthru: /* StringName */
+       VENDOR                                          = 0x1F00        # StringName
+       RENDERER                                        = 0x1F01        # StringName
+       VERSION                                         = 0x1F02        # StringName
+       EXTENSIONS                                      = 0x1F03        # StringName
+passthru: /* TextureMagFilter */
+       NEAREST                                         = 0x2600        # TextureMagFilter
+       LINEAR                                          = 0x2601        # TextureMagFilter
+passthru: /* TextureMinFilter */
+       NEAREST_MIPMAP_NEAREST                          = 0x2700        # TextureMinFilter
+       LINEAR_MIPMAP_NEAREST                           = 0x2701        # TextureMinFilter
+       NEAREST_MIPMAP_LINEAR                           = 0x2702        # TextureMinFilter
+       LINEAR_MIPMAP_LINEAR                            = 0x2703        # TextureMinFilter
+passthru: /* TextureParameterName */
+       TEXTURE_MAG_FILTER                              = 0x2800        # TextureParameterName
+       TEXTURE_MIN_FILTER                              = 0x2801        # TextureParameterName
+       TEXTURE_WRAP_S                                  = 0x2802        # TextureParameterName
+       TEXTURE_WRAP_T                                  = 0x2803        # TextureParameterName
+passthru: /* TextureTarget */
+       PROXY_TEXTURE_1D                                = 0x8063        # TextureTarget
+       PROXY_TEXTURE_2D                                = 0x8064        # TextureTarget
+passthru: /* TextureWrapMode */
+       REPEAT                                          = 0x2901        # TextureWrapMode
+passthru: /* PixelInternalFormat */
+       R3_G3_B2                                        = 0x2A10        # PixelInternalFormat
+       RGB4                                            = 0x804F        # PixelInternalFormat
+       RGB5                                            = 0x8050        # PixelInternalFormat
+       RGB8                                            = 0x8051        # PixelInternalFormat
+       RGB10                                           = 0x8052        # PixelInternalFormat
+       RGB12                                           = 0x8053        # PixelInternalFormat
+       RGB16                                           = 0x8054        # PixelInternalFormat
+       RGBA2                                           = 0x8055        # PixelInternalFormat
+       RGBA4                                           = 0x8056        # PixelInternalFormat
+       RGB5_A1                                         = 0x8057        # PixelInternalFormat
+       RGBA8                                           = 0x8058        # PixelInternalFormat
+       RGB10_A2                                        = 0x8059        # PixelInternalFormat
+       RGBA12                                          = 0x805A        # PixelInternalFormat
+       RGBA16                                          = 0x805B        # PixelInternalFormat
+
+VERSION_1_1_DEPRECATED enum:
+passthru: /* AttribMask */
+       CURRENT_BIT                                     = 0x00000001    # AttribMask
+       POINT_BIT                                       = 0x00000002    # AttribMask
+       LINE_BIT                                        = 0x00000004    # AttribMask
+       POLYGON_BIT                                     = 0x00000008    # AttribMask
+       POLYGON_STIPPLE_BIT                             = 0x00000010    # AttribMask
+       PIXEL_MODE_BIT                                  = 0x00000020    # AttribMask
+       LIGHTING_BIT                                    = 0x00000040    # AttribMask
+       FOG_BIT                                         = 0x00000080    # AttribMask
+       ACCUM_BUFFER_BIT                                = 0x00000200    # AttribMask
+       VIEWPORT_BIT                                    = 0x00000800    # AttribMask
+       TRANSFORM_BIT                                   = 0x00001000    # AttribMask
+       ENABLE_BIT                                      = 0x00002000    # AttribMask
+       HINT_BIT                                        = 0x00008000    # AttribMask
+       EVAL_BIT                                        = 0x00010000    # AttribMask
+       LIST_BIT                                        = 0x00020000    # AttribMask
+       TEXTURE_BIT                                     = 0x00040000    # AttribMask
+       SCISSOR_BIT                                     = 0x00080000    # AttribMask
+       ALL_ATTRIB_BITS                                 = 0xFFFFFFFF    # AttribMask
+passthru: /* ClientAttribMask */
+       CLIENT_PIXEL_STORE_BIT                          = 0x00000001    # ClientAttribMask
+       CLIENT_VERTEX_ARRAY_BIT                         = 0x00000002    # ClientAttribMask
+       CLIENT_ALL_ATTRIB_BITS                          = 0xFFFFFFFF    # ClientAttribMask
+passthru: /* BeginMode */
+       QUADS                                           = 0x0007        # BeginMode
+       QUAD_STRIP                                      = 0x0008        # BeginMode
+       POLYGON                                         = 0x0009        # BeginMode
+passthru: /* AccumOp */
+       ACCUM                                           = 0x0100        # AccumOp
+       LOAD                                            = 0x0101        # AccumOp
+       RETURN                                          = 0x0102        # AccumOp
+       MULT                                            = 0x0103        # AccumOp
+       ADD                                             = 0x0104        # AccumOp
+passthru: /* DrawBufferMode */
+       AUX0                                            = 0x0409        # DrawBufferMode
+       AUX1                                            = 0x040A        # DrawBufferMode
+       AUX2                                            = 0x040B        # DrawBufferMode
+       AUX3                                            = 0x040C        # DrawBufferMode
+passthru: /* ErrorCode */
+       STACK_OVERFLOW                                  = 0x0503        # ErrorCode
+       STACK_UNDERFLOW                                 = 0x0504        # ErrorCode
+passthru: /* FeedbackType */
+       2D                                              = 0x0600        # FeedbackType
+       3D                                              = 0x0601        # FeedbackType
+       3D_COLOR                                        = 0x0602        # FeedbackType
+       3D_COLOR_TEXTURE                                = 0x0603        # FeedbackType
+       4D_COLOR_TEXTURE                                = 0x0604        # FeedbackType
+passthru: /* FeedBackToken */
+       PASS_THROUGH_TOKEN                              = 0x0700        # FeedBackToken
+       POINT_TOKEN                                     = 0x0701        # FeedBackToken
+       LINE_TOKEN                                      = 0x0702        # FeedBackToken
+       POLYGON_TOKEN                                   = 0x0703        # FeedBackToken
+       BITMAP_TOKEN                                    = 0x0704        # FeedBackToken
+       DRAW_PIXEL_TOKEN                                = 0x0705        # FeedBackToken
+       COPY_PIXEL_TOKEN                                = 0x0706        # FeedBackToken
+       LINE_RESET_TOKEN                                = 0x0707        # FeedBackToken
+passthru: /* FogMode */
+       EXP                                             = 0x0800        # FogMode
+       EXP2                                            = 0x0801        # FogMode
+passthru: /* GetMapQuery */
+       COEFF                                           = 0x0A00        # GetMapQuery
+       ORDER                                           = 0x0A01        # GetMapQuery
+       DOMAIN                                          = 0x0A02        # GetMapQuery
+passthru: /* GetPixelMap */
+       PIXEL_MAP_I_TO_I                                = 0x0C70        # GetPixelMap
+       PIXEL_MAP_S_TO_S                                = 0x0C71        # GetPixelMap
+       PIXEL_MAP_I_TO_R                                = 0x0C72        # GetPixelMap
+       PIXEL_MAP_I_TO_G                                = 0x0C73        # GetPixelMap
+       PIXEL_MAP_I_TO_B                                = 0x0C74        # GetPixelMap
+       PIXEL_MAP_I_TO_A                                = 0x0C75        # GetPixelMap
+       PIXEL_MAP_R_TO_R                                = 0x0C76        # GetPixelMap
+       PIXEL_MAP_G_TO_G                                = 0x0C77        # GetPixelMap
+       PIXEL_MAP_B_TO_B                                = 0x0C78        # GetPixelMap
+       PIXEL_MAP_A_TO_A                                = 0x0C79        # GetPixelMap
+passthru: /* GetPointervPName */
+       VERTEX_ARRAY_POINTER                            = 0x808E        # GetPointervPName
+       NORMAL_ARRAY_POINTER                            = 0x808F        # GetPointervPName
+       COLOR_ARRAY_POINTER                             = 0x8090        # GetPointervPName
+       INDEX_ARRAY_POINTER                             = 0x8091        # GetPointervPName
+       TEXTURE_COORD_ARRAY_POINTER                     = 0x8092        # GetPointervPName
+       EDGE_FLAG_ARRAY_POINTER                         = 0x8093        # GetPointervPName
+       FEEDBACK_BUFFER_POINTER                         = 0x0DF0        # GetPointervPName
+       SELECTION_BUFFER_POINTER                        = 0x0DF3        # GetPointervPName
+passthru: /* GetPName */
+       CURRENT_COLOR                                   = 0x0B00 # 4 F  # GetPName
+       CURRENT_INDEX                                   = 0x0B01 # 1 F  # GetPName
+       CURRENT_NORMAL                                  = 0x0B02 # 3 F  # GetPName
+       CURRENT_TEXTURE_COORDS                          = 0x0B03 # 4 F  # GetPName
+       CURRENT_RASTER_COLOR                            = 0x0B04 # 4 F  # GetPName
+       CURRENT_RASTER_INDEX                            = 0x0B05 # 1 F  # GetPName
+       CURRENT_RASTER_TEXTURE_COORDS                   = 0x0B06 # 4 F  # GetPName
+       CURRENT_RASTER_POSITION                         = 0x0B07 # 4 F  # GetPName
+       CURRENT_RASTER_POSITION_VALID                   = 0x0B08 # 1 I  # GetPName
+       CURRENT_RASTER_DISTANCE                         = 0x0B09 # 1 F  # GetPName
+       POINT_SMOOTH                                    = 0x0B10 # 1 I  # GetPName
+       LINE_STIPPLE                                    = 0x0B24 # 1 I  # GetPName
+       LINE_STIPPLE_PATTERN                            = 0x0B25 # 1 I  # GetPName
+       LINE_STIPPLE_REPEAT                             = 0x0B26 # 1 I  # GetPName
+       LIST_MODE                                       = 0x0B30 # 1 I  # GetPName
+       MAX_LIST_NESTING                                = 0x0B31 # 1 I  # GetPName
+       LIST_BASE                                       = 0x0B32 # 1 I  # GetPName
+       LIST_INDEX                                      = 0x0B33 # 1 I  # GetPName
+       POLYGON_MODE                                    = 0x0B40 # 2 I  # GetPName
+       POLYGON_STIPPLE                                 = 0x0B42 # 1 I  # GetPName
+       EDGE_FLAG                                       = 0x0B43 # 1 I  # GetPName
+       LIGHTING                                        = 0x0B50 # 1 I  # GetPName
+       LIGHT_MODEL_LOCAL_VIEWER                        = 0x0B51 # 1 I  # GetPName
+       LIGHT_MODEL_TWO_SIDE                            = 0x0B52 # 1 I  # GetPName
+       LIGHT_MODEL_AMBIENT                             = 0x0B53 # 4 F  # GetPName
+       SHADE_MODEL                                     = 0x0B54 # 1 I  # GetPName
+       COLOR_MATERIAL_FACE                             = 0x0B55 # 1 I  # GetPName
+       COLOR_MATERIAL_PARAMETER                        = 0x0B56 # 1 I  # GetPName
+       COLOR_MATERIAL                                  = 0x0B57 # 1 I  # GetPName
+       FOG                                             = 0x0B60 # 1 I  # GetPName
+       FOG_INDEX                                       = 0x0B61 # 1 I  # GetPName
+       FOG_DENSITY                                     = 0x0B62 # 1 F  # GetPName
+       FOG_START                                       = 0x0B63 # 1 F  # GetPName
+       FOG_END                                         = 0x0B64 # 1 F  # GetPName
+       FOG_MODE                                        = 0x0B65 # 1 I  # GetPName
+       FOG_COLOR                                       = 0x0B66 # 4 F  # GetPName
+       ACCUM_CLEAR_VALUE                               = 0x0B80 # 4 F  # GetPName
+       MATRIX_MODE                                     = 0x0BA0 # 1 I  # GetPName
+       NORMALIZE                                       = 0x0BA1 # 1 I  # GetPName
+       MODELVIEW_STACK_DEPTH                           = 0x0BA3 # 1 I  # GetPName
+       PROJECTION_STACK_DEPTH                          = 0x0BA4 # 1 I  # GetPName
+       TEXTURE_STACK_DEPTH                             = 0x0BA5 # 1 I  # GetPName
+       MODELVIEW_MATRIX                                = 0x0BA6 # 16 F # GetPName
+       PROJECTION_MATRIX                               = 0x0BA7 # 16 F # GetPName
+       TEXTURE_MATRIX                                  = 0x0BA8 # 16 F # GetPName
+       ATTRIB_STACK_DEPTH                              = 0x0BB0 # 1 I  # GetPName
+       CLIENT_ATTRIB_STACK_DEPTH                       = 0x0BB1 # 1 I  # GetPName
+       ALPHA_TEST                                      = 0x0BC0 # 1 I  # GetPName
+       ALPHA_TEST_FUNC                                 = 0x0BC1 # 1 I  # GetPName
+       ALPHA_TEST_REF                                  = 0x0BC2 # 1 F  # GetPName
+       INDEX_LOGIC_OP                                  = 0x0BF1 # 1 I  # GetPName
+       LOGIC_OP                                        = 0x0BF1 # 1 I  # GetPName
+       AUX_BUFFERS                                     = 0x0C00 # 1 I  # GetPName
+       INDEX_CLEAR_VALUE                               = 0x0C20 # 1 I  # GetPName
+       INDEX_WRITEMASK                                 = 0x0C21 # 1 I  # GetPName
+       INDEX_MODE                                      = 0x0C30 # 1 I  # GetPName
+       RGBA_MODE                                       = 0x0C31 # 1 I  # GetPName
+       RENDER_MODE                                     = 0x0C40 # 1 I  # GetPName
+       PERSPECTIVE_CORRECTION_HINT                     = 0x0C50 # 1 I  # GetPName
+       POINT_SMOOTH_HINT                               = 0x0C51 # 1 I  # GetPName
+       FOG_HINT                                        = 0x0C54 # 1 I  # GetPName
+       TEXTURE_GEN_S                                   = 0x0C60 # 1 I  # GetPName
+       TEXTURE_GEN_T                                   = 0x0C61 # 1 I  # GetPName
+       TEXTURE_GEN_R                                   = 0x0C62 # 1 I  # GetPName
+       TEXTURE_GEN_Q                                   = 0x0C63 # 1 I  # GetPName
+       PIXEL_MAP_I_TO_I_SIZE                           = 0x0CB0 # 1 I  # GetPName
+       PIXEL_MAP_S_TO_S_SIZE                           = 0x0CB1 # 1 I  # GetPName
+       PIXEL_MAP_I_TO_R_SIZE                           = 0x0CB2 # 1 I  # GetPName
+       PIXEL_MAP_I_TO_G_SIZE                           = 0x0CB3 # 1 I  # GetPName
+       PIXEL_MAP_I_TO_B_SIZE                           = 0x0CB4 # 1 I  # GetPName
+       PIXEL_MAP_I_TO_A_SIZE                           = 0x0CB5 # 1 I  # GetPName
+       PIXEL_MAP_R_TO_R_SIZE                           = 0x0CB6 # 1 I  # GetPName
+       PIXEL_MAP_G_TO_G_SIZE                           = 0x0CB7 # 1 I  # GetPName
+       PIXEL_MAP_B_TO_B_SIZE                           = 0x0CB8 # 1 I  # GetPName
+       PIXEL_MAP_A_TO_A_SIZE                           = 0x0CB9 # 1 I  # GetPName
+       MAP_COLOR                                       = 0x0D10 # 1 I  # GetPName
+       MAP_STENCIL                                     = 0x0D11 # 1 I  # GetPName
+       INDEX_SHIFT                                     = 0x0D12 # 1 I  # GetPName
+       INDEX_OFFSET                                    = 0x0D13 # 1 I  # GetPName
+       RED_SCALE                                       = 0x0D14 # 1 F  # GetPName
+       RED_BIAS                                        = 0x0D15 # 1 F  # GetPName
+       ZOOM_X                                          = 0x0D16 # 1 F  # GetPName
+       ZOOM_Y                                          = 0x0D17 # 1 F  # GetPName
+       GREEN_SCALE                                     = 0x0D18 # 1 F  # GetPName
+       GREEN_BIAS                                      = 0x0D19 # 1 F  # GetPName
+       BLUE_SCALE                                      = 0x0D1A # 1 F  # GetPName
+       BLUE_BIAS                                       = 0x0D1B # 1 F  # GetPName
+       ALPHA_SCALE                                     = 0x0D1C # 1 F  # GetPName
+       ALPHA_BIAS                                      = 0x0D1D # 1 F  # GetPName
+       DEPTH_SCALE                                     = 0x0D1E # 1 F  # GetPName
+       DEPTH_BIAS                                      = 0x0D1F # 1 F  # GetPName
+       MAX_EVAL_ORDER                                  = 0x0D30 # 1 I  # GetPName
+       MAX_LIGHTS                                      = 0x0D31 # 1 I  # GetPName
+       MAX_CLIP_PLANES                                 = 0x0D32 # 1 I  # GetPName
+       MAX_PIXEL_MAP_TABLE                             = 0x0D34 # 1 I  # GetPName
+       MAX_ATTRIB_STACK_DEPTH                          = 0x0D35 # 1 I  # GetPName
+       MAX_MODELVIEW_STACK_DEPTH                       = 0x0D36 # 1 I  # GetPName
+       MAX_NAME_STACK_DEPTH                            = 0x0D37 # 1 I  # GetPName
+       MAX_PROJECTION_STACK_DEPTH                      = 0x0D38 # 1 I  # GetPName
+       MAX_TEXTURE_STACK_DEPTH                         = 0x0D39 # 1 I  # GetPName
+       MAX_CLIENT_ATTRIB_STACK_DEPTH                   = 0x0D3B # 1 I  # GetPName
+       INDEX_BITS                                      = 0x0D51 # 1 I  # GetPName
+       RED_BITS                                        = 0x0D52 # 1 I  # GetPName
+       GREEN_BITS                                      = 0x0D53 # 1 I  # GetPName
+       BLUE_BITS                                       = 0x0D54 # 1 I  # GetPName
+       ALPHA_BITS                                      = 0x0D55 # 1 I  # GetPName
+       DEPTH_BITS                                      = 0x0D56 # 1 I  # GetPName
+       STENCIL_BITS                                    = 0x0D57 # 1 I  # GetPName
+       ACCUM_RED_BITS                                  = 0x0D58 # 1 I  # GetPName
+       ACCUM_GREEN_BITS                                = 0x0D59 # 1 I  # GetPName
+       ACCUM_BLUE_BITS                                 = 0x0D5A # 1 I  # GetPName
+       ACCUM_ALPHA_BITS                                = 0x0D5B # 1 I  # GetPName
+       NAME_STACK_DEPTH                                = 0x0D70 # 1 I  # GetPName
+       AUTO_NORMAL                                     = 0x0D80 # 1 I  # GetPName
+       MAP1_COLOR_4                                    = 0x0D90 # 1 I  # GetPName
+       MAP1_INDEX                                      = 0x0D91 # 1 I  # GetPName
+       MAP1_NORMAL                                     = 0x0D92 # 1 I  # GetPName
+       MAP1_TEXTURE_COORD_1                            = 0x0D93 # 1 I  # GetPName
+       MAP1_TEXTURE_COORD_2                            = 0x0D94 # 1 I  # GetPName
+       MAP1_TEXTURE_COORD_3                            = 0x0D95 # 1 I  # GetPName
+       MAP1_TEXTURE_COORD_4                            = 0x0D96 # 1 I  # GetPName
+       MAP1_VERTEX_3                                   = 0x0D97 # 1 I  # GetPName
+       MAP1_VERTEX_4                                   = 0x0D98 # 1 I  # GetPName
+       MAP2_COLOR_4                                    = 0x0DB0 # 1 I  # GetPName
+       MAP2_INDEX                                      = 0x0DB1 # 1 I  # GetPName
+       MAP2_NORMAL                                     = 0x0DB2 # 1 I  # GetPName
+       MAP2_TEXTURE_COORD_1                            = 0x0DB3 # 1 I  # GetPName
+       MAP2_TEXTURE_COORD_2                            = 0x0DB4 # 1 I  # GetPName
+       MAP2_TEXTURE_COORD_3                            = 0x0DB5 # 1 I  # GetPName
+       MAP2_TEXTURE_COORD_4                            = 0x0DB6 # 1 I  # GetPName
+       MAP2_VERTEX_3                                   = 0x0DB7 # 1 I  # GetPName
+       MAP2_VERTEX_4                                   = 0x0DB8 # 1 I  # GetPName
+       MAP1_GRID_DOMAIN                                = 0x0DD0 # 2 F  # GetPName
+       MAP1_GRID_SEGMENTS                              = 0x0DD1 # 1 I  # GetPName
+       MAP2_GRID_DOMAIN                                = 0x0DD2 # 4 F  # GetPName
+       MAP2_GRID_SEGMENTS                              = 0x0DD3 # 2 I  # GetPName
+       FEEDBACK_BUFFER_SIZE                            = 0x0DF1 # 1 I  # GetPName
+       FEEDBACK_BUFFER_TYPE                            = 0x0DF2 # 1 I  # GetPName
+       SELECTION_BUFFER_SIZE                           = 0x0DF4 # 1 I  # GetPName
+       VERTEX_ARRAY                                    = 0x8074 # 1 I  # GetPName
+       NORMAL_ARRAY                                    = 0x8075 # 1 I  # GetPName
+       COLOR_ARRAY                                     = 0x8076 # 1 I  # GetPName
+       INDEX_ARRAY                                     = 0x8077 # 1 I  # GetPName
+       TEXTURE_COORD_ARRAY                             = 0x8078 # 1 I  # GetPName
+       EDGE_FLAG_ARRAY                                 = 0x8079 # 1 I  # GetPName
+       VERTEX_ARRAY_SIZE                               = 0x807A # 1 I  # GetPName
+       VERTEX_ARRAY_TYPE                               = 0x807B # 1 I  # GetPName
+       VERTEX_ARRAY_STRIDE                             = 0x807C # 1 I  # GetPName
+       NORMAL_ARRAY_TYPE                               = 0x807E # 1 I  # GetPName
+       NORMAL_ARRAY_STRIDE                             = 0x807F # 1 I  # GetPName
+       COLOR_ARRAY_SIZE                                = 0x8081 # 1 I  # GetPName
+       COLOR_ARRAY_TYPE                                = 0x8082 # 1 I  # GetPName
+       COLOR_ARRAY_STRIDE                              = 0x8083 # 1 I  # GetPName
+       INDEX_ARRAY_TYPE                                = 0x8085 # 1 I  # GetPName
+       INDEX_ARRAY_STRIDE                              = 0x8086 # 1 I  # GetPName
+       TEXTURE_COORD_ARRAY_SIZE                        = 0x8088 # 1 I  # GetPName
+       TEXTURE_COORD_ARRAY_TYPE                        = 0x8089 # 1 I  # GetPName
+       TEXTURE_COORD_ARRAY_STRIDE                      = 0x808A # 1 I  # GetPName
+       EDGE_FLAG_ARRAY_STRIDE                          = 0x808C # 1 I  # GetPName
+passthru: /* GetTextureParameter */
+       TEXTURE_COMPONENTS                              = 0x1003        # GetTextureParameter
+       TEXTURE_BORDER                                  = 0x1005        # GetTextureParameter
+       TEXTURE_LUMINANCE_SIZE                          = 0x8060        # GetTextureParameter
+       TEXTURE_INTENSITY_SIZE                          = 0x8061        # GetTextureParameter
+       TEXTURE_PRIORITY                                = 0x8066        # GetTextureParameter
+       TEXTURE_RESIDENT                                = 0x8067        # GetTextureParameter
+passthru: /* LightParameter */
+       AMBIENT                                         = 0x1200        # LightParameter
+       DIFFUSE                                         = 0x1201        # LightParameter
+       SPECULAR                                        = 0x1202        # LightParameter
+       POSITION                                        = 0x1203        # LightParameter
+       SPOT_DIRECTION                                  = 0x1204        # LightParameter
+       SPOT_EXPONENT                                   = 0x1205        # LightParameter
+       SPOT_CUTOFF                                     = 0x1206        # LightParameter
+       CONSTANT_ATTENUATION                            = 0x1207        # LightParameter
+       LINEAR_ATTENUATION                              = 0x1208        # LightParameter
+       QUADRATIC_ATTENUATION                           = 0x1209        # LightParameter
+passthru: /* ListMode */
+       COMPILE                                         = 0x1300        # ListMode
+       COMPILE_AND_EXECUTE                             = 0x1301        # ListMode
+passthru: /* DataType */
+       2_BYTES                                         = 0x1407        # DataType
+       3_BYTES                                         = 0x1408        # DataType
+       4_BYTES                                         = 0x1409        # DataType
+passthru: /* MaterialParameter */
+       EMISSION                                        = 0x1600        # MaterialParameter
+       SHININESS                                       = 0x1601        # MaterialParameter
+       AMBIENT_AND_DIFFUSE                             = 0x1602        # MaterialParameter
+       COLOR_INDEXES                                   = 0x1603        # MaterialParameter
+passthru: /* MatrixMode */
+       MODELVIEW                                       = 0x1700        # MatrixMode
+       PROJECTION                                      = 0x1701        # MatrixMode
+passthru: /* PixelFormat */
+       COLOR_INDEX                                     = 0x1900        # PixelFormat
+       LUMINANCE                                       = 0x1909        # PixelFormat
+       LUMINANCE_ALPHA                                 = 0x190A        # PixelFormat
+passthru: /* PixelType */
+       BITMAP                                          = 0x1A00        # PixelType
+passthru: /* RenderingMode */
+       RENDER                                          = 0x1C00        # RenderingMode
+       FEEDBACK                                        = 0x1C01        # RenderingMode
+       SELECT                                          = 0x1C02        # RenderingMode
+passthru: /* ShadingModel */
+       FLAT                                            = 0x1D00        # ShadingModel
+       SMOOTH                                          = 0x1D01        # ShadingModel
+passthru: /* TextureCoordName */
+       S                                               = 0x2000        # TextureCoordName
+       T                                               = 0x2001        # TextureCoordName
+       R                                               = 0x2002        # TextureCoordName
+       Q                                               = 0x2003        # TextureCoordName
+passthru: /* TextureEnvMode */
+       MODULATE                                        = 0x2100        # TextureEnvMode
+       DECAL                                           = 0x2101        # TextureEnvMode
+passthru: /* TextureEnvParameter */
+       TEXTURE_ENV_MODE                                = 0x2200        # TextureEnvParameter
+       TEXTURE_ENV_COLOR                               = 0x2201        # TextureEnvParameter
+passthru: /* TextureEnvTarget */
+       TEXTURE_ENV                                     = 0x2300        # TextureEnvTarget
+passthru: /* TextureGenMode */
+       EYE_LINEAR                                      = 0x2400        # TextureGenMode
+       OBJECT_LINEAR                                   = 0x2401        # TextureGenMode
+       SPHERE_MAP                                      = 0x2402        # TextureGenMode
+passthru: /* TextureGenParameter */
+       TEXTURE_GEN_MODE                                = 0x2500        # TextureGenParameter
+       OBJECT_PLANE                                    = 0x2501        # TextureGenParameter
+       EYE_PLANE                                       = 0x2502        # TextureGenParameter
+passthru: /* TextureWrapMode */
+       CLAMP                                           = 0x2900        # TextureWrapMode
+passthru: /* PixelInternalFormat */
+       ALPHA4                                          = 0x803B        # PixelInternalFormat
+       ALPHA8                                          = 0x803C        # PixelInternalFormat
+       ALPHA12                                         = 0x803D        # PixelInternalFormat
+       ALPHA16                                         = 0x803E        # PixelInternalFormat
+       LUMINANCE4                                      = 0x803F        # PixelInternalFormat
+       LUMINANCE8                                      = 0x8040        # PixelInternalFormat
+       LUMINANCE12                                     = 0x8041        # PixelInternalFormat
+       LUMINANCE16                                     = 0x8042        # PixelInternalFormat
+       LUMINANCE4_ALPHA4                               = 0x8043        # PixelInternalFormat
+       LUMINANCE6_ALPHA2                               = 0x8044        # PixelInternalFormat
+       LUMINANCE8_ALPHA8                               = 0x8045        # PixelInternalFormat
+       LUMINANCE12_ALPHA4                              = 0x8046        # PixelInternalFormat
+       LUMINANCE12_ALPHA12                             = 0x8047        # PixelInternalFormat
+       LUMINANCE16_ALPHA16                             = 0x8048        # PixelInternalFormat
+       INTENSITY                                       = 0x8049        # PixelInternalFormat
+       INTENSITY4                                      = 0x804A        # PixelInternalFormat
+       INTENSITY8                                      = 0x804B        # PixelInternalFormat
+       INTENSITY12                                     = 0x804C        # PixelInternalFormat
+       INTENSITY16                                     = 0x804D        # PixelInternalFormat
+passthru: /* InterleavedArrayFormat */
+       V2F                                             = 0x2A20        # InterleavedArrayFormat
+       V3F                                             = 0x2A21        # InterleavedArrayFormat
+       C4UB_V2F                                        = 0x2A22        # InterleavedArrayFormat
+       C4UB_V3F                                        = 0x2A23        # InterleavedArrayFormat
+       C3F_V3F                                         = 0x2A24        # InterleavedArrayFormat
+       N3F_V3F                                         = 0x2A25        # InterleavedArrayFormat
+       C4F_N3F_V3F                                     = 0x2A26        # InterleavedArrayFormat
+       T2F_V3F                                         = 0x2A27        # InterleavedArrayFormat
+       T4F_V4F                                         = 0x2A28        # InterleavedArrayFormat
+       T2F_C4UB_V3F                                    = 0x2A29        # InterleavedArrayFormat
+       T2F_C3F_V3F                                     = 0x2A2A        # InterleavedArrayFormat
+       T2F_N3F_V3F                                     = 0x2A2B        # InterleavedArrayFormat
+       T2F_C4F_N3F_V3F                                 = 0x2A2C        # InterleavedArrayFormat
+       T4F_C4F_N3F_V4F                                 = 0x2A2D        # InterleavedArrayFormat
+passthru: /* ClipPlaneName */
+       CLIP_PLANE0                                     = 0x3000 # 1 I  # ClipPlaneName
+       CLIP_PLANE1                                     = 0x3001 # 1 I  # ClipPlaneName
+       CLIP_PLANE2                                     = 0x3002 # 1 I  # ClipPlaneName
+       CLIP_PLANE3                                     = 0x3003 # 1 I  # ClipPlaneName
+       CLIP_PLANE4                                     = 0x3004 # 1 I  # ClipPlaneName
+       CLIP_PLANE5                                     = 0x3005 # 1 I  # ClipPlaneName
+passthru: /* LightName */
+       LIGHT0                                          = 0x4000 # 1 I  # LightName
+       LIGHT1                                          = 0x4001 # 1 I  # LightName
+       LIGHT2                                          = 0x4002 # 1 I  # LightName
+       LIGHT3                                          = 0x4003 # 1 I  # LightName
+       LIGHT4                                          = 0x4004 # 1 I  # LightName
+       LIGHT5                                          = 0x4005 # 1 I  # LightName
+       LIGHT6                                          = 0x4006 # 1 I  # LightName
+       LIGHT7                                          = 0x4007 # 1 I  # LightName
+
+
+###############################################################################
+#
+# OpenGL 1.2 enums
+#
+###############################################################################
+
+VERSION_1_2 enum:
+       UNSIGNED_BYTE_3_3_2                             = 0x8032 # Equivalent to EXT_packed_pixels
+       UNSIGNED_SHORT_4_4_4_4                          = 0x8033
+       UNSIGNED_SHORT_5_5_5_1                          = 0x8034
+       UNSIGNED_INT_8_8_8_8                            = 0x8035
+       UNSIGNED_INT_10_10_10_2                         = 0x8036
+       TEXTURE_BINDING_3D                              = 0x806A # 1 I
+       PACK_SKIP_IMAGES                                = 0x806B # 1 I
+       PACK_IMAGE_HEIGHT                               = 0x806C # 1 F
+       UNPACK_SKIP_IMAGES                              = 0x806D # 1 I
+       UNPACK_IMAGE_HEIGHT                             = 0x806E # 1 F
+       TEXTURE_3D                                      = 0x806F # 1 I
+       PROXY_TEXTURE_3D                                = 0x8070
+       TEXTURE_DEPTH                                   = 0x8071
+       TEXTURE_WRAP_R                                  = 0x8072
+       MAX_3D_TEXTURE_SIZE                             = 0x8073 # 1 I
+       UNSIGNED_BYTE_2_3_3_REV                         = 0x8362 # New for OpenGL 1.2
+       UNSIGNED_SHORT_5_6_5                            = 0x8363
+       UNSIGNED_SHORT_5_6_5_REV                        = 0x8364
+       UNSIGNED_SHORT_4_4_4_4_REV                      = 0x8365
+       UNSIGNED_SHORT_1_5_5_5_REV                      = 0x8366
+       UNSIGNED_INT_8_8_8_8_REV                        = 0x8367
+       UNSIGNED_INT_2_10_10_10_REV                     = 0x8368
+       BGR                                             = 0x80E0
+       BGRA                                            = 0x80E1
+       MAX_ELEMENTS_VERTICES                           = 0x80E8
+       MAX_ELEMENTS_INDICES                            = 0x80E9
+       CLAMP_TO_EDGE                                   = 0x812F # Equivalent to SGIS_texture_edge_clamp
+       TEXTURE_MIN_LOD                                 = 0x813A # Equivalent to SGIS_texture_lod
+       TEXTURE_MAX_LOD                                 = 0x813B
+       TEXTURE_BASE_LEVEL                              = 0x813C
+       TEXTURE_MAX_LEVEL                               = 0x813D
+       SMOOTH_POINT_SIZE_RANGE                         = 0x0B12 # 2 F
+       SMOOTH_POINT_SIZE_GRANULARITY                   = 0x0B13 # 1 F
+       SMOOTH_LINE_WIDTH_RANGE                         = 0x0B22 # 2 F
+       SMOOTH_LINE_WIDTH_GRANULARITY                   = 0x0B23 # 1 F
+       ALIASED_LINE_WIDTH_RANGE                        = 0x846E # 2 F
+
+VERSION_1_2_DEPRECATED enum:
+       RESCALE_NORMAL                                  = 0x803A # 1 I # Equivalent to EXT_rescale_normal
+       LIGHT_MODEL_COLOR_CONTROL                       = 0x81F8 # 1 I
+       SINGLE_COLOR                                    = 0x81F9
+       SEPARATE_SPECULAR_COLOR                         = 0x81FA
+       ALIASED_POINT_SIZE_RANGE                        = 0x846D # 2 F
+
+ARB_imaging enum:
+       CONSTANT_COLOR                                  = 0x8001 # Equivalent to EXT_blend_color
+       ONE_MINUS_CONSTANT_COLOR                        = 0x8002
+       CONSTANT_ALPHA                                  = 0x8003
+       ONE_MINUS_CONSTANT_ALPHA                        = 0x8004
+       BLEND_COLOR                                     = 0x8005 # 4 F
+       FUNC_ADD                                        = 0x8006 # Equivalent to EXT_blend_minmax
+       MIN                                             = 0x8007
+       MAX                                             = 0x8008
+       BLEND_EQUATION                                  = 0x8009 # 1 I
+       FUNC_SUBTRACT                                   = 0x800A # Equivalent to EXT_blend_subtract
+       FUNC_REVERSE_SUBTRACT                           = 0x800B
+
+ARB_imaging_DEPRECATED enum:
+       CONVOLUTION_1D                                  = 0x8010 # 1 I # Equivalent to EXT_convolution
+       CONVOLUTION_2D                                  = 0x8011 # 1 I
+       SEPARABLE_2D                                    = 0x8012 # 1 I
+       CONVOLUTION_BORDER_MODE                         = 0x8013
+       CONVOLUTION_FILTER_SCALE                        = 0x8014
+       CONVOLUTION_FILTER_BIAS                         = 0x8015
+       REDUCE                                          = 0x8016
+       CONVOLUTION_FORMAT                              = 0x8017
+       CONVOLUTION_WIDTH                               = 0x8018
+       CONVOLUTION_HEIGHT                              = 0x8019
+       MAX_CONVOLUTION_WIDTH                           = 0x801A
+       MAX_CONVOLUTION_HEIGHT                          = 0x801B
+       POST_CONVOLUTION_RED_SCALE                      = 0x801C # 1 F
+       POST_CONVOLUTION_GREEN_SCALE                    = 0x801D # 1 F
+       POST_CONVOLUTION_BLUE_SCALE                     = 0x801E # 1 F
+       POST_CONVOLUTION_ALPHA_SCALE                    = 0x801F # 1 F
+       POST_CONVOLUTION_RED_BIAS                       = 0x8020 # 1 F
+       POST_CONVOLUTION_GREEN_BIAS                     = 0x8021 # 1 F
+       POST_CONVOLUTION_BLUE_BIAS                      = 0x8022 # 1 F
+       POST_CONVOLUTION_ALPHA_BIAS                     = 0x8023 # 1 F
+       HISTOGRAM                                       = 0x8024 # 1 I # Equivalent to EXT_histogram
+       PROXY_HISTOGRAM                                 = 0x8025
+       HISTOGRAM_WIDTH                                 = 0x8026
+       HISTOGRAM_FORMAT                                = 0x8027
+       HISTOGRAM_RED_SIZE                              = 0x8028
+       HISTOGRAM_GREEN_SIZE                            = 0x8029
+       HISTOGRAM_BLUE_SIZE                             = 0x802A
+       HISTOGRAM_ALPHA_SIZE                            = 0x802B
+       HISTOGRAM_LUMINANCE_SIZE                        = 0x802C
+       HISTOGRAM_SINK                                  = 0x802D
+       MINMAX                                          = 0x802E # 1 I
+       MINMAX_FORMAT                                   = 0x802F
+       MINMAX_SINK                                     = 0x8030
+       TABLE_TOO_LARGE                                 = 0x8031
+       COLOR_MATRIX                                    = 0x80B1 # 16 F # Equivalent to SGI_color_matrix
+       COLOR_MATRIX_STACK_DEPTH                        = 0x80B2 # 1 I
+       MAX_COLOR_MATRIX_STACK_DEPTH                    = 0x80B3 # 1 I
+       POST_COLOR_MATRIX_RED_SCALE                     = 0x80B4 # 1 F
+       POST_COLOR_MATRIX_GREEN_SCALE                   = 0x80B5 # 1 F
+       POST_COLOR_MATRIX_BLUE_SCALE                    = 0x80B6 # 1 F
+       POST_COLOR_MATRIX_ALPHA_SCALE                   = 0x80B7 # 1 F
+       POST_COLOR_MATRIX_RED_BIAS                      = 0x80B8 # 1 F
+       POST_COLOR_MATRIX_GREEN_BIAS                    = 0x80B9 # 1 F
+       POST_COLOR_MATRIX_BLUE_BIAS                     = 0x80BA # 1 F
+       POST_COLOR_MATRIX_ALPHA_BIAS                    = 0x80BB # 1 F
+       COLOR_TABLE                                     = 0x80D0 # 1 I # Equivalent to SGI_color_table
+       POST_CONVOLUTION_COLOR_TABLE                    = 0x80D1 # 1 I
+       POST_COLOR_MATRIX_COLOR_TABLE                   = 0x80D2 # 1 I
+       PROXY_COLOR_TABLE                               = 0x80D3
+       PROXY_POST_CONVOLUTION_COLOR_TABLE              = 0x80D4
+       PROXY_POST_COLOR_MATRIX_COLOR_TABLE             = 0x80D5
+       COLOR_TABLE_SCALE                               = 0x80D6
+       COLOR_TABLE_BIAS                                = 0x80D7
+       COLOR_TABLE_FORMAT                              = 0x80D8
+       COLOR_TABLE_WIDTH                               = 0x80D9
+       COLOR_TABLE_RED_SIZE                            = 0x80DA
+       COLOR_TABLE_GREEN_SIZE                          = 0x80DB
+       COLOR_TABLE_BLUE_SIZE                           = 0x80DC
+       COLOR_TABLE_ALPHA_SIZE                          = 0x80DD
+       COLOR_TABLE_LUMINANCE_SIZE                      = 0x80DE
+       COLOR_TABLE_INTENSITY_SIZE                      = 0x80DF
+       CONSTANT_BORDER                                 = 0x8151
+       REPLICATE_BORDER                                = 0x8153
+       CONVOLUTION_BORDER_COLOR                        = 0x8154
+
+
+###############################################################################
+#
+# OpenGL 1.3 enums
+#
+###############################################################################
+
+VERSION_1_3 enum:
+       TEXTURE0                                        = 0x84C0        # Promoted from ARB_multitexture
+       TEXTURE1                                        = 0x84C1
+       TEXTURE2                                        = 0x84C2
+       TEXTURE3                                        = 0x84C3
+       TEXTURE4                                        = 0x84C4
+       TEXTURE5                                        = 0x84C5
+       TEXTURE6                                        = 0x84C6
+       TEXTURE7                                        = 0x84C7
+       TEXTURE8                                        = 0x84C8
+       TEXTURE9                                        = 0x84C9
+       TEXTURE10                                       = 0x84CA
+       TEXTURE11                                       = 0x84CB
+       TEXTURE12                                       = 0x84CC
+       TEXTURE13                                       = 0x84CD
+       TEXTURE14                                       = 0x84CE
+       TEXTURE15                                       = 0x84CF
+       TEXTURE16                                       = 0x84D0
+       TEXTURE17                                       = 0x84D1
+       TEXTURE18                                       = 0x84D2
+       TEXTURE19                                       = 0x84D3
+       TEXTURE20                                       = 0x84D4
+       TEXTURE21                                       = 0x84D5
+       TEXTURE22                                       = 0x84D6
+       TEXTURE23                                       = 0x84D7
+       TEXTURE24                                       = 0x84D8
+       TEXTURE25                                       = 0x84D9
+       TEXTURE26                                       = 0x84DA
+       TEXTURE27                                       = 0x84DB
+       TEXTURE28                                       = 0x84DC
+       TEXTURE29                                       = 0x84DD
+       TEXTURE30                                       = 0x84DE
+       TEXTURE31                                       = 0x84DF
+       ACTIVE_TEXTURE                                  = 0x84E0 # 1 I
+       MULTISAMPLE                                     = 0x809D        # Promoted from ARB_multisample
+       SAMPLE_ALPHA_TO_COVERAGE                        = 0x809E
+       SAMPLE_ALPHA_TO_ONE                             = 0x809F
+       SAMPLE_COVERAGE                                 = 0x80A0
+       SAMPLE_BUFFERS                                  = 0x80A8
+       SAMPLES                                         = 0x80A9
+       SAMPLE_COVERAGE_VALUE                           = 0x80AA
+       SAMPLE_COVERAGE_INVERT                          = 0x80AB
+       TEXTURE_CUBE_MAP                                = 0x8513
+       TEXTURE_BINDING_CUBE_MAP                        = 0x8514
+       TEXTURE_CUBE_MAP_POSITIVE_X                     = 0x8515
+       TEXTURE_CUBE_MAP_NEGATIVE_X                     = 0x8516
+       TEXTURE_CUBE_MAP_POSITIVE_Y                     = 0x8517
+       TEXTURE_CUBE_MAP_NEGATIVE_Y                     = 0x8518
+       TEXTURE_CUBE_MAP_POSITIVE_Z                     = 0x8519
+       TEXTURE_CUBE_MAP_NEGATIVE_Z                     = 0x851A
+       PROXY_TEXTURE_CUBE_MAP                          = 0x851B
+       MAX_CUBE_MAP_TEXTURE_SIZE                       = 0x851C
+       COMPRESSED_RGB                                  = 0x84ED
+       COMPRESSED_RGBA                                 = 0x84EE
+       TEXTURE_COMPRESSION_HINT                        = 0x84EF
+       TEXTURE_COMPRESSED_IMAGE_SIZE                   = 0x86A0
+       TEXTURE_COMPRESSED                              = 0x86A1
+       NUM_COMPRESSED_TEXTURE_FORMATS                  = 0x86A2
+       COMPRESSED_TEXTURE_FORMATS                      = 0x86A3
+       CLAMP_TO_BORDER                                 = 0x812D        # Promoted from ARB_texture_border_clamp
+
+VERSION_1_3_DEPRECATED enum:
+       CLIENT_ACTIVE_TEXTURE                           = 0x84E1 # 1 I
+       MAX_TEXTURE_UNITS                               = 0x84E2 # 1 I
+       TRANSPOSE_MODELVIEW_MATRIX                      = 0x84E3 # 16 F # Promoted from ARB_transpose_matrix
+       TRANSPOSE_PROJECTION_MATRIX                     = 0x84E4 # 16 F
+       TRANSPOSE_TEXTURE_MATRIX                        = 0x84E5 # 16 F
+       TRANSPOSE_COLOR_MATRIX                          = 0x84E6 # 16 F
+       MULTISAMPLE_BIT                                 = 0x20000000
+       NORMAL_MAP                                      = 0x8511        # Promoted from ARB_texture_cube_map
+       REFLECTION_MAP                                  = 0x8512
+       COMPRESSED_ALPHA                                = 0x84E9        # Promoted from ARB_texture_compression
+       COMPRESSED_LUMINANCE                            = 0x84EA
+       COMPRESSED_LUMINANCE_ALPHA                      = 0x84EB
+       COMPRESSED_INTENSITY                            = 0x84EC
+       COMBINE                                         = 0x8570        # Promoted from ARB_texture_env_combine
+       COMBINE_RGB                                     = 0x8571
+       COMBINE_ALPHA                                   = 0x8572
+       SOURCE0_RGB                                     = 0x8580
+       SOURCE1_RGB                                     = 0x8581
+       SOURCE2_RGB                                     = 0x8582
+       SOURCE0_ALPHA                                   = 0x8588
+       SOURCE1_ALPHA                                   = 0x8589
+       SOURCE2_ALPHA                                   = 0x858A
+       OPERAND0_RGB                                    = 0x8590
+       OPERAND1_RGB                                    = 0x8591
+       OPERAND2_RGB                                    = 0x8592
+       OPERAND0_ALPHA                                  = 0x8598
+       OPERAND1_ALPHA                                  = 0x8599
+       OPERAND2_ALPHA                                  = 0x859A
+       RGB_SCALE                                       = 0x8573
+       ADD_SIGNED                                      = 0x8574
+       INTERPOLATE                                     = 0x8575
+       SUBTRACT                                        = 0x84E7
+       CONSTANT                                        = 0x8576
+       PRIMARY_COLOR                                   = 0x8577
+       PREVIOUS                                        = 0x8578
+       DOT3_RGB                                        = 0x86AE        # Promoted from ARB_texture_env_dot3
+       DOT3_RGBA                                       = 0x86AF
+
+
+###############################################################################
+#
+# OpenGL 1.4 enums
+#
+###############################################################################
+
+VERSION_1_4 enum:
+       BLEND_DST_RGB                                   = 0x80C8
+       BLEND_SRC_RGB                                   = 0x80C9
+       BLEND_DST_ALPHA                                 = 0x80CA
+       BLEND_SRC_ALPHA                                 = 0x80CB
+       POINT_FADE_THRESHOLD_SIZE                       = 0x8128 # 1 F
+       DEPTH_COMPONENT16                               = 0x81A5
+       DEPTH_COMPONENT24                               = 0x81A6
+       DEPTH_COMPONENT32                               = 0x81A7
+       MIRRORED_REPEAT                                 = 0x8370
+       MAX_TEXTURE_LOD_BIAS                            = 0x84FD
+       TEXTURE_LOD_BIAS                                = 0x8501
+       INCR_WRAP                                       = 0x8507
+       DECR_WRAP                                       = 0x8508
+       TEXTURE_DEPTH_SIZE                              = 0x884A
+       TEXTURE_COMPARE_MODE                            = 0x884C
+       TEXTURE_COMPARE_FUNC                            = 0x884D
+
+VERSION_1_4_DEPRECATED enum:
+       POINT_SIZE_MIN                                  = 0x8126 # 1 F
+       POINT_SIZE_MAX                                  = 0x8127 # 1 F
+       POINT_DISTANCE_ATTENUATION                      = 0x8129 # 3 F
+       GENERATE_MIPMAP                                 = 0x8191
+       GENERATE_MIPMAP_HINT                            = 0x8192 # 1 I
+       FOG_COORDINATE_SOURCE                           = 0x8450 # 1 I
+       FOG_COORDINATE                                  = 0x8451
+       FRAGMENT_DEPTH                                  = 0x8452
+       CURRENT_FOG_COORDINATE                          = 0x8453 # 1 F
+       FOG_COORDINATE_ARRAY_TYPE                       = 0x8454 # 1 I
+       FOG_COORDINATE_ARRAY_STRIDE                     = 0x8455 # 1 I
+       FOG_COORDINATE_ARRAY_POINTER                    = 0x8456
+       FOG_COORDINATE_ARRAY                            = 0x8457 # 1 I
+       COLOR_SUM                                       = 0x8458 # 1 I
+       CURRENT_SECONDARY_COLOR                         = 0x8459 # 3 F
+       SECONDARY_COLOR_ARRAY_SIZE                      = 0x845A # 1 I
+       SECONDARY_COLOR_ARRAY_TYPE                      = 0x845B # 1 I
+       SECONDARY_COLOR_ARRAY_STRIDE                    = 0x845C # 1 I
+       SECONDARY_COLOR_ARRAY_POINTER                   = 0x845D
+       SECONDARY_COLOR_ARRAY                           = 0x845E # 1 I
+       TEXTURE_FILTER_CONTROL                          = 0x8500
+       DEPTH_TEXTURE_MODE                              = 0x884B
+       COMPARE_R_TO_TEXTURE                            = 0x884E
+
+
+###############################################################################
+#
+# OpenGL 1.5 enums
+#
+###############################################################################
+
+VERSION_1_5 enum:
+       BUFFER_SIZE                                     = 0x8764 # ARB_vertex_buffer_object
+       BUFFER_USAGE                                    = 0x8765 # ARB_vertex_buffer_object
+       QUERY_COUNTER_BITS                              = 0x8864 # ARB_occlusion_query
+       CURRENT_QUERY                                   = 0x8865 # ARB_occlusion_query
+       QUERY_RESULT                                    = 0x8866 # ARB_occlusion_query
+       QUERY_RESULT_AVAILABLE                          = 0x8867 # ARB_occlusion_query
+       ARRAY_BUFFER                                    = 0x8892 # ARB_vertex_buffer_object
+       ELEMENT_ARRAY_BUFFER                            = 0x8893 # ARB_vertex_buffer_object
+       ARRAY_BUFFER_BINDING                            = 0x8894 # ARB_vertex_buffer_object
+       ELEMENT_ARRAY_BUFFER_BINDING                    = 0x8895 # ARB_vertex_buffer_object
+       VERTEX_ATTRIB_ARRAY_BUFFER_BINDING              = 0x889F # ARB_vertex_buffer_object
+       READ_ONLY                                       = 0x88B8 # ARB_vertex_buffer_object
+       WRITE_ONLY                                      = 0x88B9 # ARB_vertex_buffer_object
+       READ_WRITE                                      = 0x88BA # ARB_vertex_buffer_object
+       BUFFER_ACCESS                                   = 0x88BB # ARB_vertex_buffer_object
+       BUFFER_MAPPED                                   = 0x88BC # ARB_vertex_buffer_object
+       BUFFER_MAP_POINTER                              = 0x88BD # ARB_vertex_buffer_object
+       STREAM_DRAW                                     = 0x88E0 # ARB_vertex_buffer_object
+       STREAM_READ                                     = 0x88E1 # ARB_vertex_buffer_object
+       STREAM_COPY                                     = 0x88E2 # ARB_vertex_buffer_object
+       STATIC_DRAW                                     = 0x88E4 # ARB_vertex_buffer_object
+       STATIC_READ                                     = 0x88E5 # ARB_vertex_buffer_object
+       STATIC_COPY                                     = 0x88E6 # ARB_vertex_buffer_object
+       DYNAMIC_DRAW                                    = 0x88E8 # ARB_vertex_buffer_object
+       DYNAMIC_READ                                    = 0x88E9 # ARB_vertex_buffer_object
+       DYNAMIC_COPY                                    = 0x88EA # ARB_vertex_buffer_object
+       SAMPLES_PASSED                                  = 0x8914 # ARB_occlusion_query
+
+VERSION_1_5_DEPRECATED enum:
+       VERTEX_ARRAY_BUFFER_BINDING                     = 0x8896 # ARB_vertex_buffer_object
+       NORMAL_ARRAY_BUFFER_BINDING                     = 0x8897 # ARB_vertex_buffer_object
+       COLOR_ARRAY_BUFFER_BINDING                      = 0x8898 # ARB_vertex_buffer_object
+       INDEX_ARRAY_BUFFER_BINDING                      = 0x8899 # ARB_vertex_buffer_object
+       TEXTURE_COORD_ARRAY_BUFFER_BINDING              = 0x889A # ARB_vertex_buffer_object
+       EDGE_FLAG_ARRAY_BUFFER_BINDING                  = 0x889B # ARB_vertex_buffer_object
+       SECONDARY_COLOR_ARRAY_BUFFER_BINDING            = 0x889C # ARB_vertex_buffer_object
+       FOG_COORDINATE_ARRAY_BUFFER_BINDING             = 0x889D # ARB_vertex_buffer_object
+       WEIGHT_ARRAY_BUFFER_BINDING                     = 0x889E # ARB_vertex_buffer_object
+       FOG_COORD_SRC                                   = 0x8450    # alias GL_FOG_COORDINATE_SOURCE
+       FOG_COORD                                       = 0x8451    # alias GL_FOG_COORDINATE
+       CURRENT_FOG_COORD                               = 0x8453    # alias GL_CURRENT_FOG_COORDINATE
+       FOG_COORD_ARRAY_TYPE                            = 0x8454    # alias GL_FOG_COORDINATE_ARRAY_TYPE
+       FOG_COORD_ARRAY_STRIDE                          = 0x8455    # alias GL_FOG_COORDINATE_ARRAY_STRIDE
+       FOG_COORD_ARRAY_POINTER                         = 0x8456    # alias GL_FOG_COORDINATE_ARRAY_POINTER
+       FOG_COORD_ARRAY                                 = 0x8457    # alias GL_FOG_COORDINATE_ARRAY
+       FOG_COORD_ARRAY_BUFFER_BINDING                  = 0x889D    # alias GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+# New naming scheme
+       SRC0_RGB                                        = 0x8580    # alias GL_SOURCE0_RGB
+       SRC1_RGB                                        = 0x8581    # alias GL_SOURCE1_RGB
+       SRC2_RGB                                        = 0x8582    # alias GL_SOURCE2_RGB
+       SRC0_ALPHA                                      = 0x8588    # alias GL_SOURCE0_ALPHA
+       SRC1_ALPHA                                      = 0x8589    # alias GL_SOURCE1_ALPHA
+       SRC2_ALPHA                                      = 0x858A    # alias GL_SOURCE2_ALPHA
+
+###############################################################################
+#
+# OpenGL 2.0 enums
+#
+###############################################################################
+
+VERSION_2_0 enum:
+       BLEND_EQUATION_RGB                              = 0x8009    # EXT_blend_equation_separate   # alias GL_BLEND_EQUATION
+       VERTEX_ATTRIB_ARRAY_ENABLED                     = 0x8622    # ARB_vertex_shader
+       VERTEX_ATTRIB_ARRAY_SIZE                        = 0x8623    # ARB_vertex_shader
+       VERTEX_ATTRIB_ARRAY_STRIDE                      = 0x8624    # ARB_vertex_shader
+       VERTEX_ATTRIB_ARRAY_TYPE                        = 0x8625    # ARB_vertex_shader
+       CURRENT_VERTEX_ATTRIB                           = 0x8626    # ARB_vertex_shader
+       VERTEX_PROGRAM_POINT_SIZE                       = 0x8642    # ARB_vertex_shader
+       VERTEX_ATTRIB_ARRAY_POINTER                     = 0x8645    # ARB_vertex_shader
+       STENCIL_BACK_FUNC                               = 0x8800    # ARB_stencil_two_side
+       STENCIL_BACK_FAIL                               = 0x8801    # ARB_stencil_two_side
+       STENCIL_BACK_PASS_DEPTH_FAIL                    = 0x8802    # ARB_stencil_two_side
+       STENCIL_BACK_PASS_DEPTH_PASS                    = 0x8803    # ARB_stencil_two_side
+       MAX_DRAW_BUFFERS                                = 0x8824    # ARB_draw_buffers
+       DRAW_BUFFER0                                    = 0x8825    # ARB_draw_buffers
+       DRAW_BUFFER1                                    = 0x8826    # ARB_draw_buffers
+       DRAW_BUFFER2                                    = 0x8827    # ARB_draw_buffers
+       DRAW_BUFFER3                                    = 0x8828    # ARB_draw_buffers
+       DRAW_BUFFER4                                    = 0x8829    # ARB_draw_buffers
+       DRAW_BUFFER5                                    = 0x882A    # ARB_draw_buffers
+       DRAW_BUFFER6                                    = 0x882B    # ARB_draw_buffers
+       DRAW_BUFFER7                                    = 0x882C    # ARB_draw_buffers
+       DRAW_BUFFER8                                    = 0x882D    # ARB_draw_buffers
+       DRAW_BUFFER9                                    = 0x882E    # ARB_draw_buffers
+       DRAW_BUFFER10                                   = 0x882F    # ARB_draw_buffers
+       DRAW_BUFFER11                                   = 0x8830    # ARB_draw_buffers
+       DRAW_BUFFER12                                   = 0x8831    # ARB_draw_buffers
+       DRAW_BUFFER13                                   = 0x8832    # ARB_draw_buffers
+       DRAW_BUFFER14                                   = 0x8833    # ARB_draw_buffers
+       DRAW_BUFFER15                                   = 0x8834    # ARB_draw_buffers
+       BLEND_EQUATION_ALPHA                            = 0x883D    # EXT_blend_equation_separate
+       MAX_VERTEX_ATTRIBS                              = 0x8869    # ARB_vertex_shader
+       VERTEX_ATTRIB_ARRAY_NORMALIZED                  = 0x886A    # ARB_vertex_shader
+       MAX_TEXTURE_IMAGE_UNITS                         = 0x8872    # ARB_vertex_shader, ARB_fragment_shader
+       FRAGMENT_SHADER                                 = 0x8B30    # ARB_fragment_shader
+       VERTEX_SHADER                                   = 0x8B31    # ARB_vertex_shader
+       MAX_FRAGMENT_UNIFORM_COMPONENTS                 = 0x8B49    # ARB_fragment_shader
+       MAX_VERTEX_UNIFORM_COMPONENTS                   = 0x8B4A    # ARB_vertex_shader
+       MAX_VARYING_FLOATS                              = 0x8B4B    # ARB_vertex_shader
+       MAX_VERTEX_TEXTURE_IMAGE_UNITS                  = 0x8B4C    # ARB_vertex_shader
+       MAX_COMBINED_TEXTURE_IMAGE_UNITS                = 0x8B4D    # ARB_vertex_shader
+       SHADER_TYPE                                     = 0x8B4F    # ARB_shader_objects
+       FLOAT_VEC2                                      = 0x8B50    # ARB_shader_objects
+       FLOAT_VEC3                                      = 0x8B51    # ARB_shader_objects
+       FLOAT_VEC4                                      = 0x8B52    # ARB_shader_objects
+       INT_VEC2                                        = 0x8B53    # ARB_shader_objects
+       INT_VEC3                                        = 0x8B54    # ARB_shader_objects
+       INT_VEC4                                        = 0x8B55    # ARB_shader_objects
+       BOOL                                            = 0x8B56    # ARB_shader_objects
+       BOOL_VEC2                                       = 0x8B57    # ARB_shader_objects
+       BOOL_VEC3                                       = 0x8B58    # ARB_shader_objects
+       BOOL_VEC4                                       = 0x8B59    # ARB_shader_objects
+       FLOAT_MAT2                                      = 0x8B5A    # ARB_shader_objects
+       FLOAT_MAT3                                      = 0x8B5B    # ARB_shader_objects
+       FLOAT_MAT4                                      = 0x8B5C    # ARB_shader_objects
+       SAMPLER_1D                                      = 0x8B5D    # ARB_shader_objects
+       SAMPLER_2D                                      = 0x8B5E    # ARB_shader_objects
+       SAMPLER_3D                                      = 0x8B5F    # ARB_shader_objects
+       SAMPLER_CUBE                                    = 0x8B60    # ARB_shader_objects
+       SAMPLER_1D_SHADOW                               = 0x8B61    # ARB_shader_objects
+       SAMPLER_2D_SHADOW                               = 0x8B62    # ARB_shader_objects
+       DELETE_STATUS                                   = 0x8B80    # ARB_shader_objects
+       COMPILE_STATUS                                  = 0x8B81    # ARB_shader_objects
+       LINK_STATUS                                     = 0x8B82    # ARB_shader_objects
+       VALIDATE_STATUS                                 = 0x8B83    # ARB_shader_objects
+       INFO_LOG_LENGTH                                 = 0x8B84    # ARB_shader_objects
+       ATTACHED_SHADERS                                = 0x8B85    # ARB_shader_objects
+       ACTIVE_UNIFORMS                                 = 0x8B86    # ARB_shader_objects
+       ACTIVE_UNIFORM_MAX_LENGTH                       = 0x8B87    # ARB_shader_objects
+       SHADER_SOURCE_LENGTH                            = 0x8B88    # ARB_shader_objects
+       ACTIVE_ATTRIBUTES                               = 0x8B89    # ARB_vertex_shader
+       ACTIVE_ATTRIBUTE_MAX_LENGTH                     = 0x8B8A    # ARB_vertex_shader
+       FRAGMENT_SHADER_DERIVATIVE_HINT                 = 0x8B8B    # ARB_fragment_shader
+       SHADING_LANGUAGE_VERSION                        = 0x8B8C    # ARB_shading_language_100
+       CURRENT_PROGRAM                                 = 0x8B8D    # ARB_shader_objects (added for 2.0)
+       POINT_SPRITE_COORD_ORIGIN                       = 0x8CA0    # ARB_point_sprite (added for 2.0)
+       LOWER_LEFT                                      = 0x8CA1    # ARB_point_sprite (added for 2.0)
+       UPPER_LEFT                                      = 0x8CA2    # ARB_point_sprite (added for 2.0)
+       STENCIL_BACK_REF                                = 0x8CA3    # ARB_stencil_two_side
+       STENCIL_BACK_VALUE_MASK                         = 0x8CA4    # ARB_stencil_two_side
+       STENCIL_BACK_WRITEMASK                          = 0x8CA5    # ARB_stencil_two_side
+
+VERSION_2_0_DEPRECATED enum:
+       VERTEX_PROGRAM_TWO_SIDE                         = 0x8643    # ARB_vertex_shader
+       POINT_SPRITE                                    = 0x8861    # ARB_point_sprite
+       COORD_REPLACE                                   = 0x8862    # ARB_point_sprite
+       MAX_TEXTURE_COORDS                              = 0x8871    # ARB_vertex_shader, ARB_fragment_shader
+
+
+###############################################################################
+#
+# OpenGL 2.1 enums
+#
+###############################################################################
+
+VERSION_2_1 enum:
+       PIXEL_PACK_BUFFER                               = 0x88EB    # ARB_pixel_buffer_object
+       PIXEL_UNPACK_BUFFER                             = 0x88EC    # ARB_pixel_buffer_object
+       PIXEL_PACK_BUFFER_BINDING                       = 0x88ED    # ARB_pixel_buffer_object
+       PIXEL_UNPACK_BUFFER_BINDING                     = 0x88EF    # ARB_pixel_buffer_object
+       FLOAT_MAT2x3                                    = 0x8B65    # New for 2.1
+       FLOAT_MAT2x4                                    = 0x8B66    # New for 2.1
+       FLOAT_MAT3x2                                    = 0x8B67    # New for 2.1
+       FLOAT_MAT3x4                                    = 0x8B68    # New for 2.1
+       FLOAT_MAT4x2                                    = 0x8B69    # New for 2.1
+       FLOAT_MAT4x3                                    = 0x8B6A    # New for 2.1
+       SRGB                                            = 0x8C40    # EXT_texture_sRGB
+       SRGB8                                           = 0x8C41    # EXT_texture_sRGB
+       SRGB_ALPHA                                      = 0x8C42    # EXT_texture_sRGB
+       SRGB8_ALPHA8                                    = 0x8C43    # EXT_texture_sRGB
+       COMPRESSED_SRGB                                 = 0x8C48    # EXT_texture_sRGB
+       COMPRESSED_SRGB_ALPHA                           = 0x8C49    # EXT_texture_sRGB
+
+VERSION_2_1_DEPRECATED enum:
+       CURRENT_RASTER_SECONDARY_COLOR                  = 0x845F    # New for 2.1
+       SLUMINANCE_ALPHA                                = 0x8C44    # EXT_texture_sRGB
+       SLUMINANCE8_ALPHA8                              = 0x8C45    # EXT_texture_sRGB
+       SLUMINANCE                                      = 0x8C46    # EXT_texture_sRGB
+       SLUMINANCE8                                     = 0x8C47    # EXT_texture_sRGB
+       COMPRESSED_SLUMINANCE                           = 0x8C4A    # EXT_texture_sRGB
+       COMPRESSED_SLUMINANCE_ALPHA                     = 0x8C4B    # EXT_texture_sRGB
+
+
+###############################################################################
+#
+# OpenGL 3.0 enums
+#
+###############################################################################
+
+VERSION_3_0 enum:
+       COMPARE_REF_TO_TEXTURE                          = 0x884E    # alias GL_COMPARE_R_TO_TEXTURE_ARB
+       CLIP_DISTANCE0                                  = 0x3000    # alias GL_CLIP_PLANE0
+       CLIP_DISTANCE1                                  = 0x3001    # alias GL_CLIP_PLANE1
+       CLIP_DISTANCE2                                  = 0x3002    # alias GL_CLIP_PLANE2
+       CLIP_DISTANCE3                                  = 0x3003    # alias GL_CLIP_PLANE3
+       CLIP_DISTANCE4                                  = 0x3004    # alias GL_CLIP_PLANE4
+       CLIP_DISTANCE5                                  = 0x3005    # alias GL_CLIP_PLANE5
+       CLIP_DISTANCE6                                  = 0x3006
+       CLIP_DISTANCE7                                  = 0x3007
+       MAX_CLIP_DISTANCES                              = 0x0D32    # alias GL_MAX_CLIP_PLANES
+       MAJOR_VERSION                                   = 0x821B
+       MINOR_VERSION                                   = 0x821C
+       NUM_EXTENSIONS                                  = 0x821D
+       CONTEXT_FLAGS                                   = 0x821E
+       DEPTH_BUFFER                                    = 0x8223
+       STENCIL_BUFFER                                  = 0x8224
+       COMPRESSED_RED                                  = 0x8225
+       COMPRESSED_RG                                   = 0x8226
+       CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT             = 0x0001
+       RGBA32F                                         = 0x8814
+       RGB32F                                          = 0x8815
+       RGBA16F                                         = 0x881A
+       RGB16F                                          = 0x881B
+       VERTEX_ATTRIB_ARRAY_INTEGER                     = 0x88FD
+       MAX_ARRAY_TEXTURE_LAYERS                        = 0x88FF
+       MIN_PROGRAM_TEXEL_OFFSET                        = 0x8904
+       MAX_PROGRAM_TEXEL_OFFSET                        = 0x8905
+       CLAMP_READ_COLOR                                = 0x891C
+       FIXED_ONLY                                      = 0x891D
+       MAX_VARYING_COMPONENTS                          = 0x8B4B    # alias GL_MAX_VARYING_FLOATS
+       TEXTURE_1D_ARRAY                                = 0x8C18
+       PROXY_TEXTURE_1D_ARRAY                          = 0x8C19
+       TEXTURE_2D_ARRAY                                = 0x8C1A
+       PROXY_TEXTURE_2D_ARRAY                          = 0x8C1B
+       TEXTURE_BINDING_1D_ARRAY                        = 0x8C1C
+       TEXTURE_BINDING_2D_ARRAY                        = 0x8C1D
+       R11F_G11F_B10F                                  = 0x8C3A
+       UNSIGNED_INT_10F_11F_11F_REV                    = 0x8C3B
+       RGB9_E5                                         = 0x8C3D
+       UNSIGNED_INT_5_9_9_9_REV                        = 0x8C3E
+       TEXTURE_SHARED_SIZE                             = 0x8C3F
+       TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH           = 0x8C76
+       TRANSFORM_FEEDBACK_BUFFER_MODE                  = 0x8C7F
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS      = 0x8C80
+       TRANSFORM_FEEDBACK_VARYINGS                     = 0x8C83
+       TRANSFORM_FEEDBACK_BUFFER_START                 = 0x8C84
+       TRANSFORM_FEEDBACK_BUFFER_SIZE                  = 0x8C85
+       PRIMITIVES_GENERATED                            = 0x8C87
+       TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN           = 0x8C88
+       RASTERIZER_DISCARD                              = 0x8C89
+       MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS   = 0x8C8A
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS         = 0x8C8B
+       INTERLEAVED_ATTRIBS                             = 0x8C8C
+       SEPARATE_ATTRIBS                                = 0x8C8D
+       TRANSFORM_FEEDBACK_BUFFER                       = 0x8C8E
+       TRANSFORM_FEEDBACK_BUFFER_BINDING               = 0x8C8F
+       RGBA32UI                                        = 0x8D70
+       RGB32UI                                         = 0x8D71
+       RGBA16UI                                        = 0x8D76
+       RGB16UI                                         = 0x8D77
+       RGBA8UI                                         = 0x8D7C
+       RGB8UI                                          = 0x8D7D
+       RGBA32I                                         = 0x8D82
+       RGB32I                                          = 0x8D83
+       RGBA16I                                         = 0x8D88
+       RGB16I                                          = 0x8D89
+       RGBA8I                                          = 0x8D8E
+       RGB8I                                           = 0x8D8F
+       RED_INTEGER                                     = 0x8D94
+       GREEN_INTEGER                                   = 0x8D95
+       BLUE_INTEGER                                    = 0x8D96
+       RGB_INTEGER                                     = 0x8D98
+       RGBA_INTEGER                                    = 0x8D99
+       BGR_INTEGER                                     = 0x8D9A
+       BGRA_INTEGER                                    = 0x8D9B
+       SAMPLER_1D_ARRAY                                = 0x8DC0
+       SAMPLER_2D_ARRAY                                = 0x8DC1
+       SAMPLER_1D_ARRAY_SHADOW                         = 0x8DC3
+       SAMPLER_2D_ARRAY_SHADOW                         = 0x8DC4
+       SAMPLER_CUBE_SHADOW                             = 0x8DC5
+       UNSIGNED_INT_VEC2                               = 0x8DC6
+       UNSIGNED_INT_VEC3                               = 0x8DC7
+       UNSIGNED_INT_VEC4                               = 0x8DC8
+       INT_SAMPLER_1D                                  = 0x8DC9
+       INT_SAMPLER_2D                                  = 0x8DCA
+       INT_SAMPLER_3D                                  = 0x8DCB
+       INT_SAMPLER_CUBE                                = 0x8DCC
+       INT_SAMPLER_1D_ARRAY                            = 0x8DCE
+       INT_SAMPLER_2D_ARRAY                            = 0x8DCF
+       UNSIGNED_INT_SAMPLER_1D                         = 0x8DD1
+       UNSIGNED_INT_SAMPLER_2D                         = 0x8DD2
+       UNSIGNED_INT_SAMPLER_3D                         = 0x8DD3
+       UNSIGNED_INT_SAMPLER_CUBE                       = 0x8DD4
+       UNSIGNED_INT_SAMPLER_1D_ARRAY                   = 0x8DD6
+       UNSIGNED_INT_SAMPLER_2D_ARRAY                   = 0x8DD7
+       QUERY_WAIT                                      = 0x8E13
+       QUERY_NO_WAIT                                   = 0x8E14
+       QUERY_BY_REGION_WAIT                            = 0x8E15
+       QUERY_BY_REGION_NO_WAIT                         = 0x8E16
+       BUFFER_ACCESS_FLAGS                             = 0x911F
+       BUFFER_MAP_LENGTH                               = 0x9120
+       BUFFER_MAP_OFFSET                               = 0x9121
+passthru: /* Reuse tokens from ARB_depth_buffer_float */
+       use ARB_depth_buffer_float          DEPTH_COMPONENT32F
+       use ARB_depth_buffer_float          DEPTH32F_STENCIL8
+       use ARB_depth_buffer_float          FLOAT_32_UNSIGNED_INT_24_8_REV
+passthru: /* Reuse tokens from ARB_framebuffer_object */
+       use ARB_framebuffer_object          INVALID_FRAMEBUFFER_OPERATION
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_RED_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_DEFAULT
+       use ARB_framebuffer_object          FRAMEBUFFER_UNDEFINED
+       use ARB_framebuffer_object          DEPTH_STENCIL_ATTACHMENT
+       use ARB_framebuffer_object          INDEX
+       use ARB_framebuffer_object          MAX_RENDERBUFFER_SIZE
+       use ARB_framebuffer_object          DEPTH_STENCIL
+       use ARB_framebuffer_object          UNSIGNED_INT_24_8
+       use ARB_framebuffer_object          DEPTH24_STENCIL8
+       use ARB_framebuffer_object          TEXTURE_STENCIL_SIZE
+       use ARB_framebuffer_object          TEXTURE_RED_TYPE
+       use ARB_framebuffer_object          TEXTURE_GREEN_TYPE
+       use ARB_framebuffer_object          TEXTURE_BLUE_TYPE
+       use ARB_framebuffer_object          TEXTURE_ALPHA_TYPE
+       use ARB_framebuffer_object          TEXTURE_DEPTH_TYPE
+       use ARB_framebuffer_object          UNSIGNED_NORMALIZED
+       use ARB_framebuffer_object          FRAMEBUFFER_BINDING
+       use ARB_framebuffer_object          DRAW_FRAMEBUFFER_BINDING
+       use ARB_framebuffer_object          RENDERBUFFER_BINDING
+       use ARB_framebuffer_object          READ_FRAMEBUFFER
+       use ARB_framebuffer_object          DRAW_FRAMEBUFFER
+       use ARB_framebuffer_object          READ_FRAMEBUFFER_BINDING
+       use ARB_framebuffer_object          RENDERBUFFER_SAMPLES
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+       use ARB_framebuffer_object          FRAMEBUFFER_COMPLETE
+       use ARB_framebuffer_object          FRAMEBUFFER_INCOMPLETE_ATTACHMENT
+       use ARB_framebuffer_object          FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
+       use ARB_framebuffer_object          FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
+       use ARB_framebuffer_object          FRAMEBUFFER_INCOMPLETE_READ_BUFFER
+       use ARB_framebuffer_object          FRAMEBUFFER_UNSUPPORTED
+       use ARB_framebuffer_object          MAX_COLOR_ATTACHMENTS
+       use ARB_framebuffer_object          COLOR_ATTACHMENT0
+       use ARB_framebuffer_object          COLOR_ATTACHMENT1
+       use ARB_framebuffer_object          COLOR_ATTACHMENT2
+       use ARB_framebuffer_object          COLOR_ATTACHMENT3
+       use ARB_framebuffer_object          COLOR_ATTACHMENT4
+       use ARB_framebuffer_object          COLOR_ATTACHMENT5
+       use ARB_framebuffer_object          COLOR_ATTACHMENT6
+       use ARB_framebuffer_object          COLOR_ATTACHMENT7
+       use ARB_framebuffer_object          COLOR_ATTACHMENT8
+       use ARB_framebuffer_object          COLOR_ATTACHMENT9
+       use ARB_framebuffer_object          COLOR_ATTACHMENT10
+       use ARB_framebuffer_object          COLOR_ATTACHMENT11
+       use ARB_framebuffer_object          COLOR_ATTACHMENT12
+       use ARB_framebuffer_object          COLOR_ATTACHMENT13
+       use ARB_framebuffer_object          COLOR_ATTACHMENT14
+       use ARB_framebuffer_object          COLOR_ATTACHMENT15
+       use ARB_framebuffer_object          DEPTH_ATTACHMENT
+       use ARB_framebuffer_object          STENCIL_ATTACHMENT
+       use ARB_framebuffer_object          FRAMEBUFFER
+       use ARB_framebuffer_object          RENDERBUFFER
+       use ARB_framebuffer_object          RENDERBUFFER_WIDTH
+       use ARB_framebuffer_object          RENDERBUFFER_HEIGHT
+       use ARB_framebuffer_object          RENDERBUFFER_INTERNAL_FORMAT
+       use ARB_framebuffer_object          STENCIL_INDEX1
+       use ARB_framebuffer_object          STENCIL_INDEX4
+       use ARB_framebuffer_object          STENCIL_INDEX8
+       use ARB_framebuffer_object          STENCIL_INDEX16
+       use ARB_framebuffer_object          RENDERBUFFER_RED_SIZE
+       use ARB_framebuffer_object          RENDERBUFFER_GREEN_SIZE
+       use ARB_framebuffer_object          RENDERBUFFER_BLUE_SIZE
+       use ARB_framebuffer_object          RENDERBUFFER_ALPHA_SIZE
+       use ARB_framebuffer_object          RENDERBUFFER_DEPTH_SIZE
+       use ARB_framebuffer_object          RENDERBUFFER_STENCIL_SIZE
+       use ARB_framebuffer_object          FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
+       use ARB_framebuffer_object          MAX_SAMPLES
+passthru: /* Reuse tokens from ARB_framebuffer_sRGB */
+       use ARB_framebuffer_sRGB            FRAMEBUFFER_SRGB
+passthru: /* Reuse tokens from ARB_half_float_vertex */
+       use ARB_half_float_vertex           HALF_FLOAT
+passthru: /* Reuse tokens from ARB_map_buffer_range */
+       use ARB_map_buffer_range            MAP_READ_BIT
+       use ARB_map_buffer_range            MAP_WRITE_BIT
+       use ARB_map_buffer_range            MAP_INVALIDATE_RANGE_BIT
+       use ARB_map_buffer_range            MAP_INVALIDATE_BUFFER_BIT
+       use ARB_map_buffer_range            MAP_FLUSH_EXPLICIT_BIT
+       use ARB_map_buffer_range            MAP_UNSYNCHRONIZED_BIT
+passthru: /* Reuse tokens from ARB_texture_compression_rgtc */
+       use ARB_texture_compression_rgtc    COMPRESSED_RED_RGTC1
+       use ARB_texture_compression_rgtc    COMPRESSED_SIGNED_RED_RGTC1
+       use ARB_texture_compression_rgtc    COMPRESSED_RG_RGTC2
+       use ARB_texture_compression_rgtc    COMPRESSED_SIGNED_RG_RGTC2
+passthru: /* Reuse tokens from ARB_texture_rg */
+       use ARB_texture_rg                  RG
+       use ARB_texture_rg                  RG_INTEGER
+       use ARB_texture_rg                  R8
+       use ARB_texture_rg                  R16
+       use ARB_texture_rg                  RG8
+       use ARB_texture_rg                  RG16
+       use ARB_texture_rg                  R16F
+       use ARB_texture_rg                  R32F
+       use ARB_texture_rg                  RG16F
+       use ARB_texture_rg                  RG32F
+       use ARB_texture_rg                  R8I
+       use ARB_texture_rg                  R8UI
+       use ARB_texture_rg                  R16I
+       use ARB_texture_rg                  R16UI
+       use ARB_texture_rg                  R32I
+       use ARB_texture_rg                  R32UI
+       use ARB_texture_rg                  RG8I
+       use ARB_texture_rg                  RG8UI
+       use ARB_texture_rg                  RG16I
+       use ARB_texture_rg                  RG16UI
+       use ARB_texture_rg                  RG32I
+       use ARB_texture_rg                  RG32UI
+passthru: /* Reuse tokens from ARB_vertex_array_object */
+       use ARB_vertex_array_object         VERTEX_ARRAY_BINDING
+
+VERSION_3_0_DEPRECATED enum:
+       CLAMP_VERTEX_COLOR                              = 0x891A
+       CLAMP_FRAGMENT_COLOR                            = 0x891B
+       ALPHA_INTEGER                                   = 0x8D97
+passthru: /* Reuse tokens from ARB_framebuffer_object */
+       use ARB_framebuffer_object          TEXTURE_LUMINANCE_TYPE
+       use ARB_framebuffer_object          TEXTURE_INTENSITY_TYPE
+
+
+###############################################################################
+#
+# OpenGL 3.1 enums
+#
+###############################################################################
+
+VERSION_3_1 enum:
+       SAMPLER_2D_RECT                                 = 0x8B63    # ARB_shader_objects + ARB_texture_rectangle
+       SAMPLER_2D_RECT_SHADOW                          = 0x8B64    # ARB_shader_objects + ARB_texture_rectangle
+       SAMPLER_BUFFER                                  = 0x8DC2    # EXT_gpu_shader4 + ARB_texture_buffer_object
+       INT_SAMPLER_2D_RECT                             = 0x8DCD    # EXT_gpu_shader4 + ARB_texture_rectangle
+       INT_SAMPLER_BUFFER                              = 0x8DD0    # EXT_gpu_shader4 + ARB_texture_buffer_object
+       UNSIGNED_INT_SAMPLER_2D_RECT                    = 0x8DD5    # EXT_gpu_shader4 + ARB_texture_rectangle
+       UNSIGNED_INT_SAMPLER_BUFFER                     = 0x8DD8    # EXT_gpu_shader4 + ARB_texture_buffer_object
+       TEXTURE_BUFFER                                  = 0x8C2A    # ARB_texture_buffer_object
+       MAX_TEXTURE_BUFFER_SIZE                         = 0x8C2B    # ARB_texture_buffer_object
+       TEXTURE_BINDING_BUFFER                          = 0x8C2C    # ARB_texture_buffer_object
+       TEXTURE_BUFFER_DATA_STORE_BINDING               = 0x8C2D    # ARB_texture_buffer_object
+       TEXTURE_BUFFER_FORMAT                           = 0x8C2E    # ARB_texture_buffer_object
+       TEXTURE_RECTANGLE                               = 0x84F5    # ARB_texture_rectangle
+       TEXTURE_BINDING_RECTANGLE                       = 0x84F6    # ARB_texture_rectangle
+       PROXY_TEXTURE_RECTANGLE                         = 0x84F7    # ARB_texture_rectangle
+       MAX_RECTANGLE_TEXTURE_SIZE                      = 0x84F8    # ARB_texture_rectangle
+       RED_SNORM                                       = 0x8F90    # 3.1
+       RG_SNORM                                        = 0x8F91    # 3.1
+       RGB_SNORM                                       = 0x8F92    # 3.1
+       RGBA_SNORM                                      = 0x8F93    # 3.1
+       R8_SNORM                                        = 0x8F94    # 3.1
+       RG8_SNORM                                       = 0x8F95    # 3.1
+       RGB8_SNORM                                      = 0x8F96    # 3.1
+       RGBA8_SNORM                                     = 0x8F97    # 3.1
+       R16_SNORM                                       = 0x8F98    # 3.1
+       RG16_SNORM                                      = 0x8F99    # 3.1
+       RGB16_SNORM                                     = 0x8F9A    # 3.1
+       RGBA16_SNORM                                    = 0x8F9B    # 3.1
+       SIGNED_NORMALIZED                               = 0x8F9C    # 3.1
+       PRIMITIVE_RESTART                               = 0x8F9D    # 3.1 (different from NV_primitive_restart)
+       PRIMITIVE_RESTART_INDEX                         = 0x8F9E    # 3.1 (different from NV_primitive_restart)
+passthru: /* Reuse tokens from ARB_copy_buffer */
+       use ARB_copy_buffer                 COPY_READ_BUFFER
+       use ARB_copy_buffer                 COPY_WRITE_BUFFER
+passthru: /* Would reuse tokens from ARB_draw_instanced, but it has none */
+passthru: /* Reuse tokens from ARB_uniform_buffer_object */
+       use ARB_uniform_buffer_object       UNIFORM_BUFFER
+       use ARB_uniform_buffer_object       UNIFORM_BUFFER_BINDING
+       use ARB_uniform_buffer_object       UNIFORM_BUFFER_START
+       use ARB_uniform_buffer_object       UNIFORM_BUFFER_SIZE
+       use ARB_uniform_buffer_object       MAX_VERTEX_UNIFORM_BLOCKS
+       use ARB_uniform_buffer_object       MAX_FRAGMENT_UNIFORM_BLOCKS
+       use ARB_uniform_buffer_object       MAX_COMBINED_UNIFORM_BLOCKS
+       use ARB_uniform_buffer_object       MAX_UNIFORM_BUFFER_BINDINGS
+       use ARB_uniform_buffer_object       MAX_UNIFORM_BLOCK_SIZE
+       use ARB_uniform_buffer_object       MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS
+       use ARB_uniform_buffer_object       MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
+       use ARB_uniform_buffer_object       UNIFORM_BUFFER_OFFSET_ALIGNMENT
+       use ARB_uniform_buffer_object       ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
+       use ARB_uniform_buffer_object       ACTIVE_UNIFORM_BLOCKS
+       use ARB_uniform_buffer_object       UNIFORM_TYPE
+       use ARB_uniform_buffer_object       UNIFORM_SIZE
+       use ARB_uniform_buffer_object       UNIFORM_NAME_LENGTH
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_INDEX
+       use ARB_uniform_buffer_object       UNIFORM_OFFSET
+       use ARB_uniform_buffer_object       UNIFORM_ARRAY_STRIDE
+       use ARB_uniform_buffer_object       UNIFORM_MATRIX_STRIDE
+       use ARB_uniform_buffer_object       UNIFORM_IS_ROW_MAJOR
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_BINDING
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_DATA_SIZE
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_NAME_LENGTH
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_ACTIVE_UNIFORMS
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
+       use ARB_uniform_buffer_object       UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
+       use ARB_uniform_buffer_object       INVALID_INDEX
+
+
+###############################################################################
+#
+# OpenGL 3.2 enums
+#
+###############################################################################
+
+VERSION_3_2 enum:
+       CONTEXT_CORE_PROFILE_BIT                        = 0x00000001
+       CONTEXT_COMPATIBILITY_PROFILE_BIT               = 0x00000002
+       LINES_ADJACENCY                                 = 0x000A
+       LINE_STRIP_ADJACENCY                            = 0x000B
+       TRIANGLES_ADJACENCY                             = 0x000C
+       TRIANGLE_STRIP_ADJACENCY                        = 0x000D
+       PROGRAM_POINT_SIZE                              = 0x8642
+       MAX_GEOMETRY_TEXTURE_IMAGE_UNITS                = 0x8C29
+       FRAMEBUFFER_ATTACHMENT_LAYERED                  = 0x8DA7
+       FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS            = 0x8DA8
+       GEOMETRY_SHADER                                 = 0x8DD9
+       GEOMETRY_VERTICES_OUT                           = 0x8916
+       GEOMETRY_INPUT_TYPE                             = 0x8917
+       GEOMETRY_OUTPUT_TYPE                            = 0x8918
+       MAX_GEOMETRY_UNIFORM_COMPONENTS                 = 0x8DDF
+       MAX_GEOMETRY_OUTPUT_VERTICES                    = 0x8DE0
+       MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS            = 0x8DE1
+       MAX_VERTEX_OUTPUT_COMPONENTS                    = 0x9122
+       MAX_GEOMETRY_INPUT_COMPONENTS                   = 0x9123
+       MAX_GEOMETRY_OUTPUT_COMPONENTS                  = 0x9124
+       MAX_FRAGMENT_INPUT_COMPONENTS                   = 0x9125
+       CONTEXT_PROFILE_MASK                            = 0x9126
+       use VERSION_3_0                     MAX_VARYING_COMPONENTS
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+passthru: /* Reuse tokens from ARB_depth_clamp */
+       use ARB_depth_clamp                 DEPTH_CLAMP
+passthru: /* Would reuse tokens from ARB_draw_elements_base_vertex, but it has none */
+passthru: /* Would reuse tokens from ARB_fragment_coord_conventions, but it has none */
+passthru: /* Reuse tokens from ARB_provoking_vertex */
+       use ARB_provoking_vertex            QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION
+       use ARB_provoking_vertex            FIRST_VERTEX_CONVENTION
+       use ARB_provoking_vertex            LAST_VERTEX_CONVENTION
+       use ARB_provoking_vertex            PROVOKING_VERTEX
+passthru: /* Reuse tokens from ARB_seamless_cube_map */
+       use ARB_seamless_cube_map           TEXTURE_CUBE_MAP_SEAMLESS
+passthru: /* Reuse tokens from ARB_sync */
+       use ARB_sync                        MAX_SERVER_WAIT_TIMEOUT
+       use ARB_sync                        OBJECT_TYPE
+       use ARB_sync                        SYNC_CONDITION
+       use ARB_sync                        SYNC_STATUS
+       use ARB_sync                        SYNC_FLAGS
+       use ARB_sync                        SYNC_FENCE
+       use ARB_sync                        SYNC_GPU_COMMANDS_COMPLETE
+       use ARB_sync                        UNSIGNALED
+       use ARB_sync                        SIGNALED
+       use ARB_sync                        ALREADY_SIGNALED
+       use ARB_sync                        TIMEOUT_EXPIRED
+       use ARB_sync                        CONDITION_SATISFIED
+       use ARB_sync                        WAIT_FAILED
+       use ARB_sync                        TIMEOUT_IGNORED
+       use ARB_sync                        SYNC_FLUSH_COMMANDS_BIT
+       use ARB_sync                        TIMEOUT_IGNORED
+passthru: /* Reuse tokens from ARB_texture_multisample */
+       use ARB_texture_multisample         SAMPLE_POSITION
+       use ARB_texture_multisample         SAMPLE_MASK
+       use ARB_texture_multisample         SAMPLE_MASK_VALUE
+       use ARB_texture_multisample         MAX_SAMPLE_MASK_WORDS
+       use ARB_texture_multisample         TEXTURE_2D_MULTISAMPLE
+       use ARB_texture_multisample         PROXY_TEXTURE_2D_MULTISAMPLE
+       use ARB_texture_multisample         TEXTURE_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         TEXTURE_BINDING_2D_MULTISAMPLE
+       use ARB_texture_multisample         TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         TEXTURE_SAMPLES
+       use ARB_texture_multisample         TEXTURE_FIXED_SAMPLE_LOCATIONS
+       use ARB_texture_multisample         SAMPLER_2D_MULTISAMPLE
+       use ARB_texture_multisample         INT_SAMPLER_2D_MULTISAMPLE
+       use ARB_texture_multisample         UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE
+       use ARB_texture_multisample         SAMPLER_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+       use ARB_texture_multisample         MAX_COLOR_TEXTURE_SAMPLES
+       use ARB_texture_multisample         MAX_DEPTH_TEXTURE_SAMPLES
+       use ARB_texture_multisample         MAX_INTEGER_SAMPLES
+passthru: /* Don't need to reuse tokens from ARB_vertex_array_bgra since they're already in 1.2 core */
+
+###############################################################################
+#
+# OpenGL 3.3 enums
+#
+###############################################################################
+
+VERSION_3_3 enum:
+passthru: /* Reuse tokens from ARB_blend_func_extended */
+       use ARB_blend_func_extended         SRC1_COLOR
+       use ARB_blend_func_extended         ONE_MINUS_SRC1_COLOR
+       use ARB_blend_func_extended         ONE_MINUS_SRC1_ALPHA
+       use ARB_blend_func_extended         MAX_DUAL_SOURCE_DRAW_BUFFERS
+passthru: /* Would reuse tokens from ARB_explicit_attrib_location, but it has none */
+passthru: /* Reuse tokens from ARB_occlusion_query2 */
+       use ARB_occlusion_query2            ANY_SAMPLES_PASSED
+passthru: /* Reuse tokens from ARB_sampler_objects */
+       use ARB_sampler_objects             SAMPLER_BINDING
+passthru: /* Would reuse tokens from ARB_shader_bit_encoding, but it has none */
+passthru: /* Reuse tokens from ARB_texture_rgb10_a2ui */
+       use ARB_texture_rgb10_a2ui          RGB10_A2UI
+passthru: /* Reuse tokens from ARB_texture_swizzle */
+       use ARB_texture_swizzle             TEXTURE_SWIZZLE_R
+       use ARB_texture_swizzle             TEXTURE_SWIZZLE_G
+       use ARB_texture_swizzle             TEXTURE_SWIZZLE_B
+       use ARB_texture_swizzle             TEXTURE_SWIZZLE_A
+       use ARB_texture_swizzle             TEXTURE_SWIZZLE_RGBA
+passthru: /* Reuse tokens from ARB_timer_query */
+       use ARB_timer_query                 TIME_ELAPSED
+       use ARB_timer_query                 TIMESTAMP
+passthru: /* Reuse tokens from ARB_vertex_type_2_10_10_10_rev */
+       use ARB_vertex_type_2_10_10_10_rev  INT_2_10_10_10_REV
+
+###############################################################################
+#
+# OpenGL 4.0 enums
+#
+###############################################################################
+
+VERSION_4_0 enum:
+passthru: /* Reuse tokens from ARB_draw_indirect */
+       use ARB_draw_indirect               DRAW_INDIRECT_BUFFER
+       use ARB_draw_indirect               DRAW_INDIRECT_BUFFER_BINDING
+passthru: /* Reuse tokens from ARB_gpu_shader5 */
+       use ARB_gpu_shader5                 GEOMETRY_SHADER_INVOCATIONS
+       use ARB_gpu_shader5                 MAX_GEOMETRY_SHADER_INVOCATIONS
+       use ARB_gpu_shader5                 MIN_FRAGMENT_INTERPOLATION_OFFSET
+       use ARB_gpu_shader5                 MAX_FRAGMENT_INTERPOLATION_OFFSET
+       use ARB_gpu_shader5                 FRAGMENT_INTERPOLATION_OFFSET_BITS
+       use ARB_gpu_shader5                 MAX_VERTEX_STREAMS
+passthru: /* Reuse tokens from ARB_gpu_shader_fp64 */
+       use ARB_gpu_shader_fp64             DOUBLE_VEC2
+       use ARB_gpu_shader_fp64             DOUBLE_VEC3
+       use ARB_gpu_shader_fp64             DOUBLE_VEC4
+       use ARB_gpu_shader_fp64             DOUBLE_MAT2
+       use ARB_gpu_shader_fp64             DOUBLE_MAT3
+       use ARB_gpu_shader_fp64             DOUBLE_MAT4
+       use ARB_gpu_shader_fp64             DOUBLE_MAT2x3
+       use ARB_gpu_shader_fp64             DOUBLE_MAT2x4
+       use ARB_gpu_shader_fp64             DOUBLE_MAT3x2
+       use ARB_gpu_shader_fp64             DOUBLE_MAT3x4
+       use ARB_gpu_shader_fp64             DOUBLE_MAT4x2
+       use ARB_gpu_shader_fp64             DOUBLE_MAT4x3
+passthru: /* Reuse tokens from ARB_shader_subroutine */
+       use ARB_shader_subroutine           ACTIVE_SUBROUTINES
+       use ARB_shader_subroutine           ACTIVE_SUBROUTINE_UNIFORMS
+       use ARB_shader_subroutine           ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
+       use ARB_shader_subroutine           ACTIVE_SUBROUTINE_MAX_LENGTH
+       use ARB_shader_subroutine           ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH
+       use ARB_shader_subroutine           MAX_SUBROUTINES
+       use ARB_shader_subroutine           MAX_SUBROUTINE_UNIFORM_LOCATIONS
+       use ARB_shader_subroutine           NUM_COMPATIBLE_SUBROUTINES
+       use ARB_shader_subroutine           COMPATIBLE_SUBROUTINES
+passthru: /* Reuse tokens from ARB_tessellation_shader */
+       use ARB_tessellation_shader         PATCHES
+       use ARB_tessellation_shader         PATCH_VERTICES
+       use ARB_tessellation_shader         PATCH_DEFAULT_INNER_LEVEL
+       use ARB_tessellation_shader         PATCH_DEFAULT_OUTER_LEVEL
+       use ARB_tessellation_shader         TESS_CONTROL_OUTPUT_VERTICES
+       use ARB_tessellation_shader         TESS_GEN_MODE
+       use ARB_tessellation_shader         TESS_GEN_SPACING
+       use ARB_tessellation_shader         TESS_GEN_VERTEX_ORDER
+       use ARB_tessellation_shader         TESS_GEN_POINT_MODE
+       use ARB_tessellation_shader         ISOLINES
+       use ARB_tessellation_shader         FRACTIONAL_ODD
+       use ARB_tessellation_shader         FRACTIONAL_EVEN
+       use ARB_tessellation_shader         MAX_PATCH_VERTICES
+       use ARB_tessellation_shader         MAX_TESS_GEN_LEVEL
+       use ARB_tessellation_shader         MAX_TESS_CONTROL_UNIFORM_COMPONENTS
+       use ARB_tessellation_shader         MAX_TESS_EVALUATION_UNIFORM_COMPONENTS
+       use ARB_tessellation_shader         MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS
+       use ARB_tessellation_shader         MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS
+       use ARB_tessellation_shader         MAX_TESS_CONTROL_OUTPUT_COMPONENTS
+       use ARB_tessellation_shader         MAX_TESS_PATCH_COMPONENTS
+       use ARB_tessellation_shader         MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS
+       use ARB_tessellation_shader         MAX_TESS_EVALUATION_OUTPUT_COMPONENTS
+       use ARB_tessellation_shader         MAX_TESS_CONTROL_UNIFORM_BLOCKS
+       use ARB_tessellation_shader         MAX_TESS_EVALUATION_UNIFORM_BLOCKS
+       use ARB_tessellation_shader         MAX_TESS_CONTROL_INPUT_COMPONENTS
+       use ARB_tessellation_shader         MAX_TESS_EVALUATION_INPUT_COMPONENTS
+       use ARB_tessellation_shader         MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS
+       use ARB_tessellation_shader         MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS
+       use ARB_tessellation_shader         UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER
+       use ARB_tessellation_shader         UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER
+       use ARB_tessellation_shader         TESS_EVALUATION_SHADER
+       use ARB_tessellation_shader         TESS_CONTROL_SHADER
+passthru: /* Would reuse tokens from ARB_texture_buffer_object_rgb32, but it has none */
+passthru: /* Reuse tokens from ARB_transform_feedback2 */
+       use ARB_tessellation_shader         TRANSFORM_FEEDBACK
+       use ARB_tessellation_shader         TRANSFORM_FEEDBACK_BUFFER_PAUSED
+       use ARB_tessellation_shader         TRANSFORM_FEEDBACK_BUFFER_ACTIVE
+       use ARB_tessellation_shader         TRANSFORM_FEEDBACK_BINDING
+passthru: /* Reuse tokens from ARB_transform_feedback3 */
+       use ARB_tessellation_shader         MAX_TRANSFORM_FEEDBACK_BUFFERS
+       use ARB_tessellation_shader         MAX_VERTEX_STREAMS
+
+
+###############################################################################
+#
+# ARB extensions, in ARB extension order
+#
+###############################################################################
+
+###############################################################################
+
+# ARB Extension #1
+ARB_multitexture enum:
+       TEXTURE0_ARB                                    = 0x84C0
+       TEXTURE1_ARB                                    = 0x84C1
+       TEXTURE2_ARB                                    = 0x84C2
+       TEXTURE3_ARB                                    = 0x84C3
+       TEXTURE4_ARB                                    = 0x84C4
+       TEXTURE5_ARB                                    = 0x84C5
+       TEXTURE6_ARB                                    = 0x84C6
+       TEXTURE7_ARB                                    = 0x84C7
+       TEXTURE8_ARB                                    = 0x84C8
+       TEXTURE9_ARB                                    = 0x84C9
+       TEXTURE10_ARB                                   = 0x84CA
+       TEXTURE11_ARB                                   = 0x84CB
+       TEXTURE12_ARB                                   = 0x84CC
+       TEXTURE13_ARB                                   = 0x84CD
+       TEXTURE14_ARB                                   = 0x84CE
+       TEXTURE15_ARB                                   = 0x84CF
+       TEXTURE16_ARB                                   = 0x84D0
+       TEXTURE17_ARB                                   = 0x84D1
+       TEXTURE18_ARB                                   = 0x84D2
+       TEXTURE19_ARB                                   = 0x84D3
+       TEXTURE20_ARB                                   = 0x84D4
+       TEXTURE21_ARB                                   = 0x84D5
+       TEXTURE22_ARB                                   = 0x84D6
+       TEXTURE23_ARB                                   = 0x84D7
+       TEXTURE24_ARB                                   = 0x84D8
+       TEXTURE25_ARB                                   = 0x84D9
+       TEXTURE26_ARB                                   = 0x84DA
+       TEXTURE27_ARB                                   = 0x84DB
+       TEXTURE28_ARB                                   = 0x84DC
+       TEXTURE29_ARB                                   = 0x84DD
+       TEXTURE30_ARB                                   = 0x84DE
+       TEXTURE31_ARB                                   = 0x84DF
+       ACTIVE_TEXTURE_ARB                              = 0x84E0 # 1 I
+       CLIENT_ACTIVE_TEXTURE_ARB                       = 0x84E1 # 1 I
+       MAX_TEXTURE_UNITS_ARB                           = 0x84E2 # 1 I
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #2 - GLX_ARB_get_proc_address
+
+###############################################################################
+
+# ARB Extension #3
+ARB_transpose_matrix enum:
+       TRANSPOSE_MODELVIEW_MATRIX_ARB                  = 0x84E3 # 16 F
+       TRANSPOSE_PROJECTION_MATRIX_ARB                 = 0x84E4 # 16 F
+       TRANSPOSE_TEXTURE_MATRIX_ARB                    = 0x84E5 # 16 F
+       TRANSPOSE_COLOR_MATRIX_ARB                      = 0x84E6 # 16 F
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #4 - WGL_ARB_buffer_region
+
+###############################################################################
+
+# ARB Extension #5
+ARB_multisample enum:
+       MULTISAMPLE_ARB                                 = 0x809D
+       SAMPLE_ALPHA_TO_COVERAGE_ARB                    = 0x809E
+       SAMPLE_ALPHA_TO_ONE_ARB                         = 0x809F
+       SAMPLE_COVERAGE_ARB                             = 0x80A0
+       SAMPLE_BUFFERS_ARB                              = 0x80A8
+       SAMPLES_ARB                                     = 0x80A9
+       SAMPLE_COVERAGE_VALUE_ARB                       = 0x80AA
+       SAMPLE_COVERAGE_INVERT_ARB                      = 0x80AB
+       MULTISAMPLE_BIT_ARB                             = 0x20000000
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #6
+ARB_texture_env_add enum:
+
+###############################################################################
+
+# ARB Extension #7
+ARB_texture_cube_map enum:
+       NORMAL_MAP_ARB                                  = 0x8511
+       REFLECTION_MAP_ARB                              = 0x8512
+       TEXTURE_CUBE_MAP_ARB                            = 0x8513
+       TEXTURE_BINDING_CUBE_MAP_ARB                    = 0x8514
+       TEXTURE_CUBE_MAP_POSITIVE_X_ARB                 = 0x8515
+       TEXTURE_CUBE_MAP_NEGATIVE_X_ARB                 = 0x8516
+       TEXTURE_CUBE_MAP_POSITIVE_Y_ARB                 = 0x8517
+       TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB                 = 0x8518
+       TEXTURE_CUBE_MAP_POSITIVE_Z_ARB                 = 0x8519
+       TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB                 = 0x851A
+       PROXY_TEXTURE_CUBE_MAP_ARB                      = 0x851B
+       MAX_CUBE_MAP_TEXTURE_SIZE_ARB                   = 0x851C
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #8 - WGL_ARB_extensions_string
+# ARB Extension #9 - WGL_ARB_pixel_format
+# ARB Extension #10 - WGL_ARB_make_current_read
+# ARB Extension #11 - WGL_ARB_pbuffer
+
+###############################################################################
+
+# ARB Extension #12
+ARB_texture_compression enum:
+       COMPRESSED_ALPHA_ARB                            = 0x84E9
+       COMPRESSED_LUMINANCE_ARB                        = 0x84EA
+       COMPRESSED_LUMINANCE_ALPHA_ARB                  = 0x84EB
+       COMPRESSED_INTENSITY_ARB                        = 0x84EC
+       COMPRESSED_RGB_ARB                              = 0x84ED
+       COMPRESSED_RGBA_ARB                             = 0x84EE
+       TEXTURE_COMPRESSION_HINT_ARB                    = 0x84EF
+       TEXTURE_COMPRESSED_IMAGE_SIZE_ARB               = 0x86A0
+       TEXTURE_COMPRESSED_ARB                          = 0x86A1
+       NUM_COMPRESSED_TEXTURE_FORMATS_ARB              = 0x86A2
+       COMPRESSED_TEXTURE_FORMATS_ARB                  = 0x86A3
+
+###############################################################################
+
+# ARB Extension #13
+# Promoted from #36 SGIS_texture_border_clamp
+ARB_texture_border_clamp enum:
+       CLAMP_TO_BORDER_ARB                             = 0x812D
+
+###############################################################################
+
+# ARB Extension #14 - promoted from #54 EXT_point_parameters
+# Promoted from #54 {SGIS,EXT}_point_parameters
+ARB_point_parameters enum:
+       POINT_SIZE_MIN_ARB                              = 0x8126 # 1 F
+       POINT_SIZE_MAX_ARB                              = 0x8127 # 1 F
+       POINT_FADE_THRESHOLD_SIZE_ARB                   = 0x8128 # 1 F
+       POINT_DISTANCE_ATTENUATION_ARB                  = 0x8129 # 3 F
+
+###############################################################################
+
+# ARB Extension #15
+ARB_vertex_blend enum:
+       MAX_VERTEX_UNITS_ARB                            = 0x86A4
+       ACTIVE_VERTEX_UNITS_ARB                         = 0x86A5
+       WEIGHT_SUM_UNITY_ARB                            = 0x86A6
+       VERTEX_BLEND_ARB                                = 0x86A7
+       CURRENT_WEIGHT_ARB                              = 0x86A8
+       WEIGHT_ARRAY_TYPE_ARB                           = 0x86A9
+       WEIGHT_ARRAY_STRIDE_ARB                         = 0x86AA
+       WEIGHT_ARRAY_SIZE_ARB                           = 0x86AB
+       WEIGHT_ARRAY_POINTER_ARB                        = 0x86AC
+       WEIGHT_ARRAY_ARB                                = 0x86AD
+       MODELVIEW0_ARB                                  = 0x1700
+       MODELVIEW1_ARB                                  = 0x850A
+       MODELVIEW2_ARB                                  = 0x8722
+       MODELVIEW3_ARB                                  = 0x8723
+       MODELVIEW4_ARB                                  = 0x8724
+       MODELVIEW5_ARB                                  = 0x8725
+       MODELVIEW6_ARB                                  = 0x8726
+       MODELVIEW7_ARB                                  = 0x8727
+       MODELVIEW8_ARB                                  = 0x8728
+       MODELVIEW9_ARB                                  = 0x8729
+       MODELVIEW10_ARB                                 = 0x872A
+       MODELVIEW11_ARB                                 = 0x872B
+       MODELVIEW12_ARB                                 = 0x872C
+       MODELVIEW13_ARB                                 = 0x872D
+       MODELVIEW14_ARB                                 = 0x872E
+       MODELVIEW15_ARB                                 = 0x872F
+       MODELVIEW16_ARB                                 = 0x8730
+       MODELVIEW17_ARB                                 = 0x8731
+       MODELVIEW18_ARB                                 = 0x8732
+       MODELVIEW19_ARB                                 = 0x8733
+       MODELVIEW20_ARB                                 = 0x8734
+       MODELVIEW21_ARB                                 = 0x8735
+       MODELVIEW22_ARB                                 = 0x8736
+       MODELVIEW23_ARB                                 = 0x8737
+       MODELVIEW24_ARB                                 = 0x8738
+       MODELVIEW25_ARB                                 = 0x8739
+       MODELVIEW26_ARB                                 = 0x873A
+       MODELVIEW27_ARB                                 = 0x873B
+       MODELVIEW28_ARB                                 = 0x873C
+       MODELVIEW29_ARB                                 = 0x873D
+       MODELVIEW30_ARB                                 = 0x873E
+       MODELVIEW31_ARB                                 = 0x873F
+
+###############################################################################
+
+# ARB Extension #16
+ARB_matrix_palette enum:
+       MATRIX_PALETTE_ARB                              = 0x8840
+       MAX_MATRIX_PALETTE_STACK_DEPTH_ARB              = 0x8841
+       MAX_PALETTE_MATRICES_ARB                        = 0x8842
+       CURRENT_PALETTE_MATRIX_ARB                      = 0x8843
+       MATRIX_INDEX_ARRAY_ARB                          = 0x8844
+       CURRENT_MATRIX_INDEX_ARB                        = 0x8845
+       MATRIX_INDEX_ARRAY_SIZE_ARB                     = 0x8846
+       MATRIX_INDEX_ARRAY_TYPE_ARB                     = 0x8847
+       MATRIX_INDEX_ARRAY_STRIDE_ARB                   = 0x8848
+       MATRIX_INDEX_ARRAY_POINTER_ARB                  = 0x8849
+
+###############################################################################
+
+# ARB Extension #17
+# Shares enum values with EXT_texture_env_combine
+ARB_texture_env_combine enum:
+       COMBINE_ARB                                     = 0x8570
+       COMBINE_RGB_ARB                                 = 0x8571
+       COMBINE_ALPHA_ARB                               = 0x8572
+       SOURCE0_RGB_ARB                                 = 0x8580
+       SOURCE1_RGB_ARB                                 = 0x8581
+       SOURCE2_RGB_ARB                                 = 0x8582
+       SOURCE0_ALPHA_ARB                               = 0x8588
+       SOURCE1_ALPHA_ARB                               = 0x8589
+       SOURCE2_ALPHA_ARB                               = 0x858A
+       OPERAND0_RGB_ARB                                = 0x8590
+       OPERAND1_RGB_ARB                                = 0x8591
+       OPERAND2_RGB_ARB                                = 0x8592
+       OPERAND0_ALPHA_ARB                              = 0x8598
+       OPERAND1_ALPHA_ARB                              = 0x8599
+       OPERAND2_ALPHA_ARB                              = 0x859A
+       RGB_SCALE_ARB                                   = 0x8573
+       ADD_SIGNED_ARB                                  = 0x8574
+       INTERPOLATE_ARB                                 = 0x8575
+       SUBTRACT_ARB                                    = 0x84E7
+       CONSTANT_ARB                                    = 0x8576
+       PRIMARY_COLOR_ARB                               = 0x8577
+       PREVIOUS_ARB                                    = 0x8578
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #18
+ARB_texture_env_crossbar enum:
+
+###############################################################################
+
+# ARB Extension #19
+# Promoted from #220 EXT_texture_env_dot3; enum values changed
+ARB_texture_env_dot3 enum:
+       DOT3_RGB_ARB                                    = 0x86AE
+       DOT3_RGBA_ARB                                   = 0x86AF
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #20 - WGL_ARB_render_texture
+
+###############################################################################
+
+# ARB Extension #21
+ARB_texture_mirrored_repeat enum:
+       MIRRORED_REPEAT_ARB                             = 0x8370
+
+###############################################################################
+
+# ARB Extension #22
+ARB_depth_texture enum:
+       DEPTH_COMPONENT16_ARB                           = 0x81A5
+       DEPTH_COMPONENT24_ARB                           = 0x81A6
+       DEPTH_COMPONENT32_ARB                           = 0x81A7
+       TEXTURE_DEPTH_SIZE_ARB                          = 0x884A
+       DEPTH_TEXTURE_MODE_ARB                          = 0x884B
+
+###############################################################################
+
+# ARB Extension #23
+ARB_shadow enum:
+       TEXTURE_COMPARE_MODE_ARB                                = 0x884C
+       TEXTURE_COMPARE_FUNC_ARB                                = 0x884D
+       COMPARE_R_TO_TEXTURE_ARB                                = 0x884E
+
+###############################################################################
+
+# ARB Extension #24
+ARB_shadow_ambient enum:
+       TEXTURE_COMPARE_FAIL_VALUE_ARB                  = 0x80BF
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #25
+ARB_window_pos enum:
+
+###############################################################################
+
+# ARB Extension #26
+# ARB_vertex_program enums are shared by ARB_fragment_program are so marked.
+# Unfortunately, PROGRAM_BINDING_ARB does accidentally reuse 0x8677 -
+#   this was a spec editing typo that's now uncorrectable.
+ARB_vertex_program enum:
+       COLOR_SUM_ARB                                   = 0x8458
+       VERTEX_PROGRAM_ARB                              = 0x8620
+       VERTEX_ATTRIB_ARRAY_ENABLED_ARB                 = 0x8622
+       VERTEX_ATTRIB_ARRAY_SIZE_ARB                    = 0x8623
+       VERTEX_ATTRIB_ARRAY_STRIDE_ARB                  = 0x8624
+       VERTEX_ATTRIB_ARRAY_TYPE_ARB                    = 0x8625
+       CURRENT_VERTEX_ATTRIB_ARB                       = 0x8626
+       PROGRAM_LENGTH_ARB                              = 0x8627    # shared
+       PROGRAM_STRING_ARB                              = 0x8628    # shared
+       MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB              = 0x862E    # shared
+       MAX_PROGRAM_MATRICES_ARB                        = 0x862F    # shared
+       CURRENT_MATRIX_STACK_DEPTH_ARB                  = 0x8640    # shared
+       CURRENT_MATRIX_ARB                              = 0x8641    # shared
+       VERTEX_PROGRAM_POINT_SIZE_ARB                   = 0x8642
+       VERTEX_PROGRAM_TWO_SIDE_ARB                     = 0x8643
+       VERTEX_ATTRIB_ARRAY_POINTER_ARB                 = 0x8645
+       PROGRAM_ERROR_POSITION_ARB                      = 0x864B    # shared
+       PROGRAM_BINDING_ARB                             = 0x8677    # shared
+       MAX_VERTEX_ATTRIBS_ARB                          = 0x8869
+       VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB              = 0x886A
+       PROGRAM_ERROR_STRING_ARB                        = 0x8874    # shared
+       PROGRAM_FORMAT_ASCII_ARB                        = 0x8875    # shared
+       PROGRAM_FORMAT_ARB                              = 0x8876    # shared
+       PROGRAM_INSTRUCTIONS_ARB                        = 0x88A0    # shared
+       MAX_PROGRAM_INSTRUCTIONS_ARB                    = 0x88A1    # shared
+       PROGRAM_NATIVE_INSTRUCTIONS_ARB                 = 0x88A2    # shared
+       MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB             = 0x88A3    # shared
+       PROGRAM_TEMPORARIES_ARB                         = 0x88A4    # shared
+       MAX_PROGRAM_TEMPORARIES_ARB                     = 0x88A5    # shared
+       PROGRAM_NATIVE_TEMPORARIES_ARB                  = 0x88A6    # shared
+       MAX_PROGRAM_NATIVE_TEMPORARIES_ARB              = 0x88A7    # shared
+       PROGRAM_PARAMETERS_ARB                          = 0x88A8    # shared
+       MAX_PROGRAM_PARAMETERS_ARB                      = 0x88A9    # shared
+       PROGRAM_NATIVE_PARAMETERS_ARB                   = 0x88AA    # shared
+       MAX_PROGRAM_NATIVE_PARAMETERS_ARB               = 0x88AB    # shared
+       PROGRAM_ATTRIBS_ARB                             = 0x88AC    # shared
+       MAX_PROGRAM_ATTRIBS_ARB                         = 0x88AD    # shared
+       PROGRAM_NATIVE_ATTRIBS_ARB                      = 0x88AE    # shared
+       MAX_PROGRAM_NATIVE_ATTRIBS_ARB                  = 0x88AF    # shared
+       PROGRAM_ADDRESS_REGISTERS_ARB                   = 0x88B0    # shared
+       MAX_PROGRAM_ADDRESS_REGISTERS_ARB               = 0x88B1    # shared
+       PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB            = 0x88B2    # shared
+       MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB        = 0x88B3    # shared
+       MAX_PROGRAM_LOCAL_PARAMETERS_ARB                = 0x88B4    # shared
+       MAX_PROGRAM_ENV_PARAMETERS_ARB                  = 0x88B5    # shared
+       PROGRAM_UNDER_NATIVE_LIMITS_ARB                 = 0x88B6    # shared
+       TRANSPOSE_CURRENT_MATRIX_ARB                    = 0x88B7    # shared
+       MATRIX0_ARB                                     = 0x88C0    # shared
+       MATRIX1_ARB                                     = 0x88C1    # shared
+       MATRIX2_ARB                                     = 0x88C2    # shared
+       MATRIX3_ARB                                     = 0x88C3    # shared
+       MATRIX4_ARB                                     = 0x88C4    # shared
+       MATRIX5_ARB                                     = 0x88C5    # shared
+       MATRIX6_ARB                                     = 0x88C6    # shared
+       MATRIX7_ARB                                     = 0x88C7    # shared
+       MATRIX8_ARB                                     = 0x88C8    # shared
+       MATRIX9_ARB                                     = 0x88C9    # shared
+       MATRIX10_ARB                                    = 0x88CA    # shared
+       MATRIX11_ARB                                    = 0x88CB    # shared
+       MATRIX12_ARB                                    = 0x88CC    # shared
+       MATRIX13_ARB                                    = 0x88CD    # shared
+       MATRIX14_ARB                                    = 0x88CE    # shared
+       MATRIX15_ARB                                    = 0x88CF    # shared
+       MATRIX16_ARB                                    = 0x88D0    # shared
+       MATRIX17_ARB                                    = 0x88D1    # shared
+       MATRIX18_ARB                                    = 0x88D2    # shared
+       MATRIX19_ARB                                    = 0x88D3    # shared
+       MATRIX20_ARB                                    = 0x88D4    # shared
+       MATRIX21_ARB                                    = 0x88D5    # shared
+       MATRIX22_ARB                                    = 0x88D6    # shared
+       MATRIX23_ARB                                    = 0x88D7    # shared
+       MATRIX24_ARB                                    = 0x88D8    # shared
+       MATRIX25_ARB                                    = 0x88D9    # shared
+       MATRIX26_ARB                                    = 0x88DA    # shared
+       MATRIX27_ARB                                    = 0x88DB    # shared
+       MATRIX28_ARB                                    = 0x88DC    # shared
+       MATRIX29_ARB                                    = 0x88DD    # shared
+       MATRIX30_ARB                                    = 0x88DE    # shared
+       MATRIX31_ARB                                    = 0x88DF    # shared
+
+###############################################################################
+
+# ARB Extension #27
+# Some ARB_fragment_program enums are shared with ARB_vertex_program,
+#   and are only included in that #define block, for now.
+ARB_fragment_program enum:
+#      PROGRAM_LENGTH_ARB                              = 0x8627    # shared
+#      PROGRAM_STRING_ARB                              = 0x8628    # shared
+#      MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB              = 0x862E    # shared
+#      MAX_PROGRAM_MATRICES_ARB                        = 0x862F    # shared
+#      CURRENT_MATRIX_STACK_DEPTH_ARB                  = 0x8640    # shared
+#      CURRENT_MATRIX_ARB                              = 0x8641    # shared
+#      PROGRAM_ERROR_POSITION_ARB                      = 0x864B    # shared
+#      PROGRAM_BINDING_ARB                             = 0x8677    # shared
+       FRAGMENT_PROGRAM_ARB                            = 0x8804
+       PROGRAM_ALU_INSTRUCTIONS_ARB                    = 0x8805
+       PROGRAM_TEX_INSTRUCTIONS_ARB                    = 0x8806
+       PROGRAM_TEX_INDIRECTIONS_ARB                    = 0x8807
+       PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB             = 0x8808
+       PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB             = 0x8809
+       PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB             = 0x880A
+       MAX_PROGRAM_ALU_INSTRUCTIONS_ARB                = 0x880B
+       MAX_PROGRAM_TEX_INSTRUCTIONS_ARB                = 0x880C
+       MAX_PROGRAM_TEX_INDIRECTIONS_ARB                = 0x880D
+       MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB         = 0x880E
+       MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB         = 0x880F
+       MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB         = 0x8810
+       MAX_TEXTURE_COORDS_ARB                          = 0x8871
+       MAX_TEXTURE_IMAGE_UNITS_ARB                     = 0x8872
+#      PROGRAM_ERROR_STRING_ARB                        = 0x8874    # shared
+#      PROGRAM_FORMAT_ASCII_ARB                        = 0x8875    # shared
+#      PROGRAM_FORMAT_ARB                              = 0x8876    # shared
+#      PROGRAM_INSTRUCTIONS_ARB                        = 0x88A0    # shared
+#      MAX_PROGRAM_INSTRUCTIONS_ARB                    = 0x88A1    # shared
+#      PROGRAM_NATIVE_INSTRUCTIONS_ARB                 = 0x88A2    # shared
+#      MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB             = 0x88A3    # shared
+#      PROGRAM_TEMPORARIES_ARB                         = 0x88A4    # shared
+#      MAX_PROGRAM_TEMPORARIES_ARB                     = 0x88A5    # shared
+#      PROGRAM_NATIVE_TEMPORARIES_ARB                  = 0x88A6    # shared
+#      MAX_PROGRAM_NATIVE_TEMPORARIES_ARB              = 0x88A7    # shared
+#      PROGRAM_PARAMETERS_ARB                          = 0x88A8    # shared
+#      MAX_PROGRAM_PARAMETERS_ARB                      = 0x88A9    # shared
+#      PROGRAM_NATIVE_PARAMETERS_ARB                   = 0x88AA    # shared
+#      MAX_PROGRAM_NATIVE_PARAMETERS_ARB               = 0x88AB    # shared
+#      PROGRAM_ATTRIBS_ARB                             = 0x88AC    # shared
+#      MAX_PROGRAM_ATTRIBS_ARB                         = 0x88AD    # shared
+#      PROGRAM_NATIVE_ATTRIBS_ARB                      = 0x88AE    # shared
+#      MAX_PROGRAM_NATIVE_ATTRIBS_ARB                  = 0x88AF    # shared
+#      PROGRAM_ADDRESS_REGISTERS_ARB                   = 0x88B0    # shared
+#      MAX_PROGRAM_ADDRESS_REGISTERS_ARB               = 0x88B1    # shared
+#      PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB            = 0x88B2    # shared
+#      MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB        = 0x88B3    # shared
+#      MAX_PROGRAM_LOCAL_PARAMETERS_ARB                = 0x88B4    # shared
+#      MAX_PROGRAM_ENV_PARAMETERS_ARB                  = 0x88B5    # shared
+#      PROGRAM_UNDER_NATIVE_LIMITS_ARB                 = 0x88B6    # shared
+#      TRANSPOSE_CURRENT_MATRIX_ARB                    = 0x88B7    # shared
+#      MATRIX0_ARB                                     = 0x88C0    # shared
+#      MATRIX1_ARB                                     = 0x88C1    # shared
+#      MATRIX2_ARB                                     = 0x88C2    # shared
+#      MATRIX3_ARB                                     = 0x88C3    # shared
+#      MATRIX4_ARB                                     = 0x88C4    # shared
+#      MATRIX5_ARB                                     = 0x88C5    # shared
+#      MATRIX6_ARB                                     = 0x88C6    # shared
+#      MATRIX7_ARB                                     = 0x88C7    # shared
+#      MATRIX8_ARB                                     = 0x88C8    # shared
+#      MATRIX9_ARB                                     = 0x88C9    # shared
+#      MATRIX10_ARB                                    = 0x88CA    # shared
+#      MATRIX11_ARB                                    = 0x88CB    # shared
+#      MATRIX12_ARB                                    = 0x88CC    # shared
+#      MATRIX13_ARB                                    = 0x88CD    # shared
+#      MATRIX14_ARB                                    = 0x88CE    # shared
+#      MATRIX15_ARB                                    = 0x88CF    # shared
+#      MATRIX16_ARB                                    = 0x88D0    # shared
+#      MATRIX17_ARB                                    = 0x88D1    # shared
+#      MATRIX18_ARB                                    = 0x88D2    # shared
+#      MATRIX19_ARB                                    = 0x88D3    # shared
+#      MATRIX20_ARB                                    = 0x88D4    # shared
+#      MATRIX21_ARB                                    = 0x88D5    # shared
+#      MATRIX22_ARB                                    = 0x88D6    # shared
+#      MATRIX23_ARB                                    = 0x88D7    # shared
+#      MATRIX24_ARB                                    = 0x88D8    # shared
+#      MATRIX25_ARB                                    = 0x88D9    # shared
+#      MATRIX26_ARB                                    = 0x88DA    # shared
+#      MATRIX27_ARB                                    = 0x88DB    # shared
+#      MATRIX28_ARB                                    = 0x88DC    # shared
+#      MATRIX29_ARB                                    = 0x88DD    # shared
+#      MATRIX30_ARB                                    = 0x88DE    # shared
+#      MATRIX31_ARB                                    = 0x88DF    # shared
+
+
+###############################################################################
+
+# ARB Extension #28
+ARB_vertex_buffer_object enum:
+       BUFFER_SIZE_ARB                                 = 0x8764
+       BUFFER_USAGE_ARB                                = 0x8765
+       ARRAY_BUFFER_ARB                                = 0x8892
+       ELEMENT_ARRAY_BUFFER_ARB                        = 0x8893
+       ARRAY_BUFFER_BINDING_ARB                        = 0x8894
+       ELEMENT_ARRAY_BUFFER_BINDING_ARB                = 0x8895
+       VERTEX_ARRAY_BUFFER_BINDING_ARB                 = 0x8896
+       NORMAL_ARRAY_BUFFER_BINDING_ARB                 = 0x8897
+       COLOR_ARRAY_BUFFER_BINDING_ARB                  = 0x8898
+       INDEX_ARRAY_BUFFER_BINDING_ARB                  = 0x8899
+       TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB          = 0x889A
+       EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB              = 0x889B
+       SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB        = 0x889C
+       FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB         = 0x889D
+       WEIGHT_ARRAY_BUFFER_BINDING_ARB                 = 0x889E
+       VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB          = 0x889F
+       READ_ONLY_ARB                                   = 0x88B8
+       WRITE_ONLY_ARB                                  = 0x88B9
+       READ_WRITE_ARB                                  = 0x88BA
+       BUFFER_ACCESS_ARB                               = 0x88BB
+       BUFFER_MAPPED_ARB                               = 0x88BC
+       BUFFER_MAP_POINTER_ARB                          = 0x88BD
+       STREAM_DRAW_ARB                                 = 0x88E0
+       STREAM_READ_ARB                                 = 0x88E1
+       STREAM_COPY_ARB                                 = 0x88E2
+       STATIC_DRAW_ARB                                 = 0x88E4
+       STATIC_READ_ARB                                 = 0x88E5
+       STATIC_COPY_ARB                                 = 0x88E6
+       DYNAMIC_DRAW_ARB                                = 0x88E8
+       DYNAMIC_READ_ARB                                = 0x88E9
+       DYNAMIC_COPY_ARB                                = 0x88EA
+
+###############################################################################
+
+# ARB Extension #29
+ARB_occlusion_query enum:
+       QUERY_COUNTER_BITS_ARB                          = 0x8864
+       CURRENT_QUERY_ARB                               = 0x8865
+       QUERY_RESULT_ARB                                = 0x8866
+       QUERY_RESULT_AVAILABLE_ARB                      = 0x8867
+       SAMPLES_PASSED_ARB                              = 0x8914
+
+###############################################################################
+
+# ARB Extension #30
+ARB_shader_objects enum:
+       PROGRAM_OBJECT_ARB                              = 0x8B40
+       SHADER_OBJECT_ARB                               = 0x8B48
+       OBJECT_TYPE_ARB                                 = 0x8B4E
+       OBJECT_SUBTYPE_ARB                              = 0x8B4F
+       FLOAT_VEC2_ARB                                  = 0x8B50
+       FLOAT_VEC3_ARB                                  = 0x8B51
+       FLOAT_VEC4_ARB                                  = 0x8B52
+       INT_VEC2_ARB                                    = 0x8B53
+       INT_VEC3_ARB                                    = 0x8B54
+       INT_VEC4_ARB                                    = 0x8B55
+       BOOL_ARB                                        = 0x8B56
+       BOOL_VEC2_ARB                                   = 0x8B57
+       BOOL_VEC3_ARB                                   = 0x8B58
+       BOOL_VEC4_ARB                                   = 0x8B59
+       FLOAT_MAT2_ARB                                  = 0x8B5A
+       FLOAT_MAT3_ARB                                  = 0x8B5B
+       FLOAT_MAT4_ARB                                  = 0x8B5C
+       SAMPLER_1D_ARB                                  = 0x8B5D
+       SAMPLER_2D_ARB                                  = 0x8B5E
+       SAMPLER_3D_ARB                                  = 0x8B5F
+       SAMPLER_CUBE_ARB                                = 0x8B60
+       SAMPLER_1D_SHADOW_ARB                           = 0x8B61
+       SAMPLER_2D_SHADOW_ARB                           = 0x8B62
+       SAMPLER_2D_RECT_ARB                             = 0x8B63
+       SAMPLER_2D_RECT_SHADOW_ARB                      = 0x8B64
+       OBJECT_DELETE_STATUS_ARB                        = 0x8B80
+       OBJECT_COMPILE_STATUS_ARB                       = 0x8B81
+       OBJECT_LINK_STATUS_ARB                          = 0x8B82
+       OBJECT_VALIDATE_STATUS_ARB                      = 0x8B83
+       OBJECT_INFO_LOG_LENGTH_ARB                      = 0x8B84
+       OBJECT_ATTACHED_OBJECTS_ARB                     = 0x8B85
+       OBJECT_ACTIVE_UNIFORMS_ARB                      = 0x8B86
+       OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB            = 0x8B87
+       OBJECT_SHADER_SOURCE_LENGTH_ARB                 = 0x8B88
+
+###############################################################################
+
+# ARB Extension #31
+# Additional enums are reused from ARB_vertex/fragment_program and ARB_shader_objects
+ARB_vertex_shader enum:
+       VERTEX_SHADER_ARB                               = 0x8B31
+       MAX_VERTEX_UNIFORM_COMPONENTS_ARB               = 0x8B4A
+       MAX_VARYING_FLOATS_ARB                          = 0x8B4B
+       MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB              = 0x8B4C
+       MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB            = 0x8B4D
+       OBJECT_ACTIVE_ATTRIBUTES_ARB                    = 0x8B89
+       OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB          = 0x8B8A
+
+###############################################################################
+
+# ARB Extension #32
+# Additional enums are reused from ARB_fragment_program and ARB_shader_objects
+ARB_fragment_shader enum:
+       FRAGMENT_SHADER_ARB                             = 0x8B30
+       MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB             = 0x8B49
+       FRAGMENT_SHADER_DERIVATIVE_HINT_ARB             = 0x8B8B
+
+###############################################################################
+
+# ARB Extension #33
+ARB_shading_language_100 enum:
+       SHADING_LANGUAGE_VERSION_ARB                    = 0x8B8C
+
+###############################################################################
+
+# ARB Extension #34
+# No new tokens
+ARB_texture_non_power_of_two enum:
+
+###############################################################################
+
+# ARB Extension #35
+ARB_point_sprite enum:
+       POINT_SPRITE_ARB                                = 0x8861
+       COORD_REPLACE_ARB                               = 0x8862
+
+###############################################################################
+
+# ARB Extension #36
+# No new tokens
+ARB_fragment_program_shadow enum:
+
+###############################################################################
+
+# ARB Extension #37
+ARB_draw_buffers enum:
+       MAX_DRAW_BUFFERS_ARB                            = 0x8824
+       DRAW_BUFFER0_ARB                                = 0x8825
+       DRAW_BUFFER1_ARB                                = 0x8826
+       DRAW_BUFFER2_ARB                                = 0x8827
+       DRAW_BUFFER3_ARB                                = 0x8828
+       DRAW_BUFFER4_ARB                                = 0x8829
+       DRAW_BUFFER5_ARB                                = 0x882A
+       DRAW_BUFFER6_ARB                                = 0x882B
+       DRAW_BUFFER7_ARB                                = 0x882C
+       DRAW_BUFFER8_ARB                                = 0x882D
+       DRAW_BUFFER9_ARB                                = 0x882E
+       DRAW_BUFFER10_ARB                               = 0x882F
+       DRAW_BUFFER11_ARB                               = 0x8830
+       DRAW_BUFFER12_ARB                               = 0x8831
+       DRAW_BUFFER13_ARB                               = 0x8832
+       DRAW_BUFFER14_ARB                               = 0x8833
+       DRAW_BUFFER15_ARB                               = 0x8834
+
+###############################################################################
+
+# ARB Extension #38
+ARB_texture_rectangle enum:
+       TEXTURE_RECTANGLE_ARB                           = 0x84F5
+       TEXTURE_BINDING_RECTANGLE_ARB                   = 0x84F6
+       PROXY_TEXTURE_RECTANGLE_ARB                     = 0x84F7
+       MAX_RECTANGLE_TEXTURE_SIZE_ARB                  = 0x84F8
+
+###############################################################################
+
+# ARB Extension #39
+ARB_color_buffer_float enum:
+       RGBA_FLOAT_MODE_ARB                             = 0x8820
+       CLAMP_VERTEX_COLOR_ARB                          = 0x891A
+       CLAMP_FRAGMENT_COLOR_ARB                        = 0x891B
+       CLAMP_READ_COLOR_ARB                            = 0x891C
+       FIXED_ONLY_ARB                                  = 0x891D
+
+###############################################################################
+
+# ARB Extension #40
+ARB_half_float_pixel enum:
+       HALF_FLOAT_ARB                                  = 0x140B
+
+###############################################################################
+
+# ARB Extension #41
+ARB_texture_float enum:
+       TEXTURE_RED_TYPE_ARB                            = 0x8C10
+       TEXTURE_GREEN_TYPE_ARB                          = 0x8C11
+       TEXTURE_BLUE_TYPE_ARB                           = 0x8C12
+       TEXTURE_ALPHA_TYPE_ARB                          = 0x8C13
+       TEXTURE_LUMINANCE_TYPE_ARB                      = 0x8C14
+       TEXTURE_INTENSITY_TYPE_ARB                      = 0x8C15
+       TEXTURE_DEPTH_TYPE_ARB                          = 0x8C16
+       UNSIGNED_NORMALIZED_ARB                         = 0x8C17
+       RGBA32F_ARB                                     = 0x8814
+       RGB32F_ARB                                      = 0x8815
+       ALPHA32F_ARB                                    = 0x8816
+       INTENSITY32F_ARB                                = 0x8817
+       LUMINANCE32F_ARB                                = 0x8818
+       LUMINANCE_ALPHA32F_ARB                          = 0x8819
+       RGBA16F_ARB                                     = 0x881A
+       RGB16F_ARB                                      = 0x881B
+       ALPHA16F_ARB                                    = 0x881C
+       INTENSITY16F_ARB                                = 0x881D
+       LUMINANCE16F_ARB                                = 0x881E
+       LUMINANCE_ALPHA16F_ARB                          = 0x881F
+
+###############################################################################
+
+# ARB Extension #42
+ARB_pixel_buffer_object enum:
+       PIXEL_PACK_BUFFER_ARB                           = 0x88EB
+       PIXEL_UNPACK_BUFFER_ARB                         = 0x88EC
+       PIXEL_PACK_BUFFER_BINDING_ARB                   = 0x88ED
+       PIXEL_UNPACK_BUFFER_BINDING_ARB                 = 0x88EF
+
+###############################################################################
+
+# ARB Extension #43
+ARB_depth_buffer_float enum:
+       DEPTH_COMPONENT32F                              = 0x8CAC
+       DEPTH32F_STENCIL8                               = 0x8CAD
+       FLOAT_32_UNSIGNED_INT_24_8_REV                  = 0x8DAD
+
+###############################################################################
+
+# ARB Extension #44
+# No new tokens
+ARB_draw_instanced enum:
+
+###############################################################################
+
+# ARB Extension #45
+ARB_framebuffer_object enum:
+       INVALID_FRAMEBUFFER_OPERATION                   = 0x0506
+       FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING           = 0x8210
+       FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE           = 0x8211
+       FRAMEBUFFER_ATTACHMENT_RED_SIZE                 = 0x8212
+       FRAMEBUFFER_ATTACHMENT_GREEN_SIZE               = 0x8213
+       FRAMEBUFFER_ATTACHMENT_BLUE_SIZE                = 0x8214
+       FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE               = 0x8215
+       FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE               = 0x8216
+       FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE             = 0x8217
+       FRAMEBUFFER_DEFAULT                             = 0x8218
+       FRAMEBUFFER_UNDEFINED                           = 0x8219
+       DEPTH_STENCIL_ATTACHMENT                        = 0x821A
+       MAX_RENDERBUFFER_SIZE                           = 0x84E8
+       DEPTH_STENCIL                                   = 0x84F9
+       UNSIGNED_INT_24_8                               = 0x84FA
+       DEPTH24_STENCIL8                                = 0x88F0
+       TEXTURE_STENCIL_SIZE                            = 0x88F1
+       TEXTURE_RED_TYPE                                = 0x8C10
+       TEXTURE_GREEN_TYPE                              = 0x8C11
+       TEXTURE_BLUE_TYPE                               = 0x8C12
+       TEXTURE_ALPHA_TYPE                              = 0x8C13
+       TEXTURE_DEPTH_TYPE                              = 0x8C16
+       UNSIGNED_NORMALIZED                             = 0x8C17
+       FRAMEBUFFER_BINDING                             = 0x8CA6
+       DRAW_FRAMEBUFFER_BINDING                        = GL_FRAMEBUFFER_BINDING
+       RENDERBUFFER_BINDING                            = 0x8CA7
+       READ_FRAMEBUFFER                                = 0x8CA8
+       DRAW_FRAMEBUFFER                                = 0x8CA9
+       READ_FRAMEBUFFER_BINDING                        = 0x8CAA
+       RENDERBUFFER_SAMPLES                            = 0x8CAB
+       FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE              = 0x8CD0
+       FRAMEBUFFER_ATTACHMENT_OBJECT_NAME              = 0x8CD1
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL            = 0x8CD2
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE    = 0x8CD3
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER            = 0x8CD4
+       FRAMEBUFFER_COMPLETE                            = 0x8CD5
+       FRAMEBUFFER_INCOMPLETE_ATTACHMENT               = 0x8CD6
+       FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT       = 0x8CD7
+       FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER              = 0x8CDB
+       FRAMEBUFFER_INCOMPLETE_READ_BUFFER              = 0x8CDC
+       FRAMEBUFFER_UNSUPPORTED                         = 0x8CDD
+       MAX_COLOR_ATTACHMENTS                           = 0x8CDF
+       COLOR_ATTACHMENT0                               = 0x8CE0
+       COLOR_ATTACHMENT1                               = 0x8CE1
+       COLOR_ATTACHMENT2                               = 0x8CE2
+       COLOR_ATTACHMENT3                               = 0x8CE3
+       COLOR_ATTACHMENT4                               = 0x8CE4
+       COLOR_ATTACHMENT5                               = 0x8CE5
+       COLOR_ATTACHMENT6                               = 0x8CE6
+       COLOR_ATTACHMENT7                               = 0x8CE7
+       COLOR_ATTACHMENT8                               = 0x8CE8
+       COLOR_ATTACHMENT9                               = 0x8CE9
+       COLOR_ATTACHMENT10                              = 0x8CEA
+       COLOR_ATTACHMENT11                              = 0x8CEB
+       COLOR_ATTACHMENT12                              = 0x8CEC
+       COLOR_ATTACHMENT13                              = 0x8CED
+       COLOR_ATTACHMENT14                              = 0x8CEE
+       COLOR_ATTACHMENT15                              = 0x8CEF
+       DEPTH_ATTACHMENT                                = 0x8D00
+       STENCIL_ATTACHMENT                              = 0x8D20
+       FRAMEBUFFER                                     = 0x8D40
+       RENDERBUFFER                                    = 0x8D41
+       RENDERBUFFER_WIDTH                              = 0x8D42
+       RENDERBUFFER_HEIGHT                             = 0x8D43
+       RENDERBUFFER_INTERNAL_FORMAT                    = 0x8D44
+       STENCIL_INDEX1                                  = 0x8D46
+       STENCIL_INDEX4                                  = 0x8D47
+       STENCIL_INDEX8                                  = 0x8D48
+       STENCIL_INDEX16                                 = 0x8D49
+       RENDERBUFFER_RED_SIZE                           = 0x8D50
+       RENDERBUFFER_GREEN_SIZE                         = 0x8D51
+       RENDERBUFFER_BLUE_SIZE                          = 0x8D52
+       RENDERBUFFER_ALPHA_SIZE                         = 0x8D53
+       RENDERBUFFER_DEPTH_SIZE                         = 0x8D54
+       RENDERBUFFER_STENCIL_SIZE                       = 0x8D55
+       FRAMEBUFFER_INCOMPLETE_MULTISAMPLE              = 0x8D56
+       MAX_SAMPLES                                     = 0x8D57
+
+ARB_framebuffer_object_DEPRECATED enum:
+       INDEX                                           = 0x8222
+       TEXTURE_LUMINANCE_TYPE                          = 0x8C14
+       TEXTURE_INTENSITY_TYPE                          = 0x8C15
+
+###############################################################################
+
+# ARB Extension #46
+ARB_framebuffer_sRGB enum:
+       FRAMEBUFFER_SRGB                                = 0x8DB9
+
+###############################################################################
+
+# ARB Extension #47
+ARB_geometry_shader4 enum:
+       LINES_ADJACENCY_ARB                             = 0x000A
+       LINE_STRIP_ADJACENCY_ARB                        = 0x000B
+       TRIANGLES_ADJACENCY_ARB                         = 0x000C
+       TRIANGLE_STRIP_ADJACENCY_ARB                    = 0x000D
+       PROGRAM_POINT_SIZE_ARB                          = 0x8642
+       MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB            = 0x8C29
+       FRAMEBUFFER_ATTACHMENT_LAYERED_ARB              = 0x8DA7
+       FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB        = 0x8DA8
+       FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB          = 0x8DA9
+       GEOMETRY_SHADER_ARB                             = 0x8DD9
+       GEOMETRY_VERTICES_OUT_ARB                       = 0x8DDA
+       GEOMETRY_INPUT_TYPE_ARB                         = 0x8DDB
+       GEOMETRY_OUTPUT_TYPE_ARB                        = 0x8DDC
+       MAX_GEOMETRY_VARYING_COMPONENTS_ARB             = 0x8DDD
+       MAX_VERTEX_VARYING_COMPONENTS_ARB               = 0x8DDE
+       MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB             = 0x8DDF
+       MAX_GEOMETRY_OUTPUT_VERTICES_ARB                = 0x8DE0
+       MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB        = 0x8DE1
+       use VERSION_3_0                     MAX_VARYING_COMPONENTS
+       use ARB_framebuffer_object          FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+
+###############################################################################
+
+# ARB Extension #48
+ARB_half_float_vertex enum:
+       HALF_FLOAT                                      = 0x140B
+
+###############################################################################
+
+# ARB Extension #49
+ARB_instanced_arrays enum:
+       VERTEX_ATTRIB_ARRAY_DIVISOR_ARB                 = 0x88FE
+
+###############################################################################
+
+# ARB Extension #50
+ARB_map_buffer_range enum:
+       MAP_READ_BIT                                    = 0x0001
+       MAP_WRITE_BIT                                   = 0x0002
+       MAP_INVALIDATE_RANGE_BIT                        = 0x0004
+       MAP_INVALIDATE_BUFFER_BIT                       = 0x0008
+       MAP_FLUSH_EXPLICIT_BIT                          = 0x0010
+       MAP_UNSYNCHRONIZED_BIT                          = 0x0020
+
+###############################################################################
+
+# ARB Extension #51
+ARB_texture_buffer_object enum:
+       TEXTURE_BUFFER_ARB                              = 0x8C2A
+       MAX_TEXTURE_BUFFER_SIZE_ARB                     = 0x8C2B
+       TEXTURE_BINDING_BUFFER_ARB                      = 0x8C2C
+       TEXTURE_BUFFER_DATA_STORE_BINDING_ARB           = 0x8C2D
+       TEXTURE_BUFFER_FORMAT_ARB                       = 0x8C2E
+
+###############################################################################
+
+# ARB Extension #52
+ARB_texture_compression_rgtc enum:
+       COMPRESSED_RED_RGTC1                            = 0x8DBB
+       COMPRESSED_SIGNED_RED_RGTC1                     = 0x8DBC
+       COMPRESSED_RG_RGTC2                             = 0x8DBD
+       COMPRESSED_SIGNED_RG_RGTC2                      = 0x8DBE
+
+###############################################################################
+
+# ARB Extension #53
+ARB_texture_rg enum:
+       RG                                              = 0x8227
+       RG_INTEGER                                      = 0x8228
+       R8                                              = 0x8229
+       R16                                             = 0x822A
+       RG8                                             = 0x822B
+       RG16                                            = 0x822C
+       R16F                                            = 0x822D
+       R32F                                            = 0x822E
+       RG16F                                           = 0x822F
+       RG32F                                           = 0x8230
+       R8I                                             = 0x8231
+       R8UI                                            = 0x8232
+       R16I                                            = 0x8233
+       R16UI                                           = 0x8234
+       R32I                                            = 0x8235
+       R32UI                                           = 0x8236
+       RG8I                                            = 0x8237
+       RG8UI                                           = 0x8238
+       RG16I                                           = 0x8239
+       RG16UI                                          = 0x823A
+       RG32I                                           = 0x823B
+       RG32UI                                          = 0x823C
+
+###############################################################################
+
+# ARB Extension #54
+ARB_vertex_array_object enum:
+       VERTEX_ARRAY_BINDING                            = 0x85B5
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #55 - WGL_ARB_create_context
+# ARB Extension #56 - GLX_ARB_create_context
+
+###############################################################################
+
+# ARB Extension #57
+ARB_uniform_buffer_object enum:
+       UNIFORM_BUFFER                                  = 0x8A11
+       UNIFORM_BUFFER_BINDING                          = 0x8A28
+       UNIFORM_BUFFER_START                            = 0x8A29
+       UNIFORM_BUFFER_SIZE                             = 0x8A2A
+       MAX_VERTEX_UNIFORM_BLOCKS                       = 0x8A2B
+       MAX_GEOMETRY_UNIFORM_BLOCKS                     = 0x8A2C
+       MAX_FRAGMENT_UNIFORM_BLOCKS                     = 0x8A2D
+       MAX_COMBINED_UNIFORM_BLOCKS                     = 0x8A2E
+       MAX_UNIFORM_BUFFER_BINDINGS                     = 0x8A2F
+       MAX_UNIFORM_BLOCK_SIZE                          = 0x8A30
+       MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS          = 0x8A31
+       MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS        = 0x8A32
+       MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS        = 0x8A33
+       UNIFORM_BUFFER_OFFSET_ALIGNMENT                 = 0x8A34
+       ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH            = 0x8A35
+       ACTIVE_UNIFORM_BLOCKS                           = 0x8A36
+       UNIFORM_TYPE                                    = 0x8A37
+       UNIFORM_SIZE                                    = 0x8A38
+       UNIFORM_NAME_LENGTH                             = 0x8A39
+       UNIFORM_BLOCK_INDEX                             = 0x8A3A
+       UNIFORM_OFFSET                                  = 0x8A3B
+       UNIFORM_ARRAY_STRIDE                            = 0x8A3C
+       UNIFORM_MATRIX_STRIDE                           = 0x8A3D
+       UNIFORM_IS_ROW_MAJOR                            = 0x8A3E
+       UNIFORM_BLOCK_BINDING                           = 0x8A3F
+       UNIFORM_BLOCK_DATA_SIZE                         = 0x8A40
+       UNIFORM_BLOCK_NAME_LENGTH                       = 0x8A41
+       UNIFORM_BLOCK_ACTIVE_UNIFORMS                   = 0x8A42
+       UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES            = 0x8A43
+       UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER       = 0x8A44
+       UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER     = 0x8A45
+       UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER     = 0x8A46
+       INVALID_INDEX                                   = 0xFFFFFFFFu
+
+###############################################################################
+
+# ARB Extension #58
+# No new tokens
+ARB_compatibility enum:
+passthru: /* ARB_compatibility just defines tokens from core 3.0 */
+
+###############################################################################
+
+# ARB Extension #59
+ARB_copy_buffer enum:
+       COPY_READ_BUFFER                                = 0x8F36
+       COPY_WRITE_BUFFER                               = 0x8F37
+
+###############################################################################
+
+# ARB Extension #60
+# No new tokens
+ARB_shader_texture_lod enum:
+
+###############################################################################
+
+# ARB Extension #61
+ARB_depth_clamp enum:
+       DEPTH_CLAMP                                     = 0x864F
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #62
+ARB_draw_elements_base_vertex enum:
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #63
+ARB_fragment_coord_conventions enum:
+
+###############################################################################
+
+# ARB Extension #64
+ARB_provoking_vertex enum:
+       QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION        = 0x8E4C
+       FIRST_VERTEX_CONVENTION                         = 0x8E4D
+       LAST_VERTEX_CONVENTION                          = 0x8E4E
+       PROVOKING_VERTEX                                = 0x8E4F
+
+###############################################################################
+
+# ARB Extension #65
+ARB_seamless_cube_map enum:
+       TEXTURE_CUBE_MAP_SEAMLESS                       = 0x884F
+
+###############################################################################
+
+# ARB Extension #66
+ARB_sync enum:
+       MAX_SERVER_WAIT_TIMEOUT                         = 0x9111
+       OBJECT_TYPE                                     = 0x9112
+       SYNC_CONDITION                                  = 0x9113
+       SYNC_STATUS                                     = 0x9114
+       SYNC_FLAGS                                      = 0x9115
+       SYNC_FENCE                                      = 0x9116
+       SYNC_GPU_COMMANDS_COMPLETE                      = 0x9117
+       UNSIGNALED                                      = 0x9118
+       SIGNALED                                        = 0x9119
+       ALREADY_SIGNALED                                = 0x911A
+       TIMEOUT_EXPIRED                                 = 0x911B
+       CONDITION_SATISFIED                             = 0x911C
+       WAIT_FAILED                                     = 0x911D
+       SYNC_FLUSH_COMMANDS_BIT                         = 0x00000001
+       TIMEOUT_IGNORED                                 = 0xFFFFFFFFFFFFFFFFull
+
+###############################################################################
+
+# ARB Extension #67
+ARB_texture_multisample enum:
+       SAMPLE_POSITION                                 = 0x8E50
+       SAMPLE_MASK                                     = 0x8E51
+       SAMPLE_MASK_VALUE                               = 0x8E52
+       MAX_SAMPLE_MASK_WORDS                           = 0x8E59
+       TEXTURE_2D_MULTISAMPLE                          = 0x9100
+       PROXY_TEXTURE_2D_MULTISAMPLE                    = 0x9101
+       TEXTURE_2D_MULTISAMPLE_ARRAY                    = 0x9102
+       PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY              = 0x9103
+       TEXTURE_BINDING_2D_MULTISAMPLE                  = 0x9104
+       TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY            = 0x9105
+       TEXTURE_SAMPLES                                 = 0x9106
+       TEXTURE_FIXED_SAMPLE_LOCATIONS                  = 0x9107
+       SAMPLER_2D_MULTISAMPLE                          = 0x9108
+       INT_SAMPLER_2D_MULTISAMPLE                      = 0x9109
+       UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE             = 0x910A
+       SAMPLER_2D_MULTISAMPLE_ARRAY                    = 0x910B
+       INT_SAMPLER_2D_MULTISAMPLE_ARRAY                = 0x910C
+       UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY       = 0x910D
+       MAX_COLOR_TEXTURE_SAMPLES                       = 0x910E
+       MAX_DEPTH_TEXTURE_SAMPLES                       = 0x910F
+       MAX_INTEGER_SAMPLES                             = 0x9110
+
+###############################################################################
+
+# ARB Extension #68
+ARB_vertex_array_bgra enum:
+       use VERSION_1_2                     BGRA
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #69
+ARB_draw_buffers_blend enum:
+#@@@ Add ARB suffixes here & functions!
+
+###############################################################################
+
+# ARB Extension #70
+#@@@ Add ARB suffixes here & functions!
+ARB_sample_shading enum:
+       SAMPLE_SHADING                                  = 0x8C36
+       MIN_SAMPLE_SHADING_VALUE                        = 0x8C37
+
+###############################################################################
+
+# ARB Extension #71
+#@@@ Add ARB suffixes here & functions!
+ARB_texture_cube_map_array enum:
+       TEXTURE_CUBE_MAP_ARRAY                          = 0x9009
+       TEXTURE_BINDING_CUBE_MAP_ARRAY                  = 0x900A
+       PROXY_TEXTURE_CUBE_MAP_ARRAY                    = 0x900B
+       SAMPLER_CUBE_MAP_ARRAY                          = 0x900C
+       SAMPLER_CUBE_MAP_ARRAY_SHADOW                   = 0x900D
+       INT_SAMPLER_CUBE_MAP_ARRAY                      = 0x900E
+       UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY             = 0x900F
+
+###############################################################################
+
+# ARB Extension #72
+#@@@ Add ARB suffixes here & functions!
+ARB_texture_gather enum:
+       MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB           = 0x8E5E
+       MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB           = 0x8E5F
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #73
+ARB_texture_query_lod enum:
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #74 - WGL_ARB_create_context_profile
+# ARB Extension #75 - GLX_ARB_create_context_profile
+
+###############################################################################
+
+# ARB Extension #76
+ARB_shading_language_include enum:
+       SHADER_INCLUDE_ARB                              = 0x8DAE
+       NAMED_STRING_LENGTH_ARB                         = 0x8DE9
+       NAMED_STRING_TYPE_ARB                           = 0x8DEA
+
+###############################################################################
+
+# ARB Extension #77
+ARB_texture_compression_bptc enum:
+       COMPRESSED_RGBA_BPTC_UNORM_ARB                  = 0x8E8C
+       COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB            = 0x8E8D
+       COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB            = 0x8E8E
+       COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB          = 0x8E8F
+
+###############################################################################
+
+# ARB Extension #78
+ARB_blend_func_extended enum:
+       SRC1_COLOR                                      = 0x88F9
+       use VERSION_1_5_DEPRECATED          SRC1_ALPHA
+       ONE_MINUS_SRC1_COLOR                            = 0x88FA
+       ONE_MINUS_SRC1_ALPHA                            = 0x88FB
+       MAX_DUAL_SOURCE_DRAW_BUFFERS                    = 0x88FC
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #79
+ARB_explicit_attrib_location enum:
+
+###############################################################################
+
+# ARB Extension #80
+ARB_occlusion_query2 enum:
+       ANY_SAMPLES_PASSED                              = 0x8C2F
+
+###############################################################################
+
+# ARB Extension #81
+ARB_sampler_objects enum:
+       SAMPLER_BINDING                                 = 0x8919
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #82
+ARB_shader_bit_encoding enum:
+
+###############################################################################
+
+# ARB Extension #83
+ARB_texture_rgb10_a2ui enum:
+       RGB10_A2UI                                      = 0x906F
+
+###############################################################################
+
+# ARB Extension #84
+ARB_texture_swizzle enum:
+       TEXTURE_SWIZZLE_R                               = 0x8E42
+       TEXTURE_SWIZZLE_G                               = 0x8E43
+       TEXTURE_SWIZZLE_B                               = 0x8E44
+       TEXTURE_SWIZZLE_A                               = 0x8E45
+       TEXTURE_SWIZZLE_RGBA                            = 0x8E46
+
+###############################################################################
+
+# ARB Extension #85
+ARB_timer_query enum:
+       TIME_ELAPSED                                    = 0x88BF
+       TIMESTAMP                                       = 0x8E28
+
+###############################################################################
+
+# ARB Extension #86
+ARB_vertex_type_2_10_10_10_rev enum:
+       use VERSION_1_2                     UNSIGNED_INT_2_10_10_10_REV
+       INT_2_10_10_10_REV                              = 0x8D9F
+
+###############################################################################
+
+# ARB Extension #87
+ARB_draw_indirect enum:
+       DRAW_INDIRECT_BUFFER                            = 0x8F3F
+       DRAW_INDIRECT_BUFFER_BINDING                    = 0x8F43
+
+###############################################################################
+
+# ARB Extension #88
+ARB_gpu_shader5 enum:
+       GEOMETRY_SHADER_INVOCATIONS                     = 0x887F
+       MAX_GEOMETRY_SHADER_INVOCATIONS                 = 0x8E5A
+       MIN_FRAGMENT_INTERPOLATION_OFFSET               = 0x8E5B
+       MAX_FRAGMENT_INTERPOLATION_OFFSET               = 0x8E5C
+       FRAGMENT_INTERPOLATION_OFFSET_BITS              = 0x8E5D
+       MAX_VERTEX_STREAMS                              = 0x8E71
+
+###############################################################################
+
+# ARB Extension #89
+ARB_gpu_shader_fp64 enum:
+       use VERSION_1_1                     DOUBLE
+       DOUBLE_VEC2                                     = 0x8FFC
+       DOUBLE_VEC3                                     = 0x8FFD
+       DOUBLE_VEC4                                     = 0x8FFE
+       DOUBLE_MAT2                                     = 0x8F46
+       DOUBLE_MAT3                                     = 0x8F47
+       DOUBLE_MAT4                                     = 0x8F48
+       DOUBLE_MAT2x3                                   = 0x8F49
+       DOUBLE_MAT2x4                                   = 0x8F4A
+       DOUBLE_MAT3x2                                   = 0x8F4B
+       DOUBLE_MAT3x4                                   = 0x8F4C
+       DOUBLE_MAT4x2                                   = 0x8F4D
+       DOUBLE_MAT4x3                                   = 0x8F4E
+
+###############################################################################
+
+# ARB Extension #90
+ARB_shader_subroutine enum:
+       ACTIVE_SUBROUTINES                              = 0x8DE5
+       ACTIVE_SUBROUTINE_UNIFORMS                      = 0x8DE6
+       ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS             = 0x8E47
+       ACTIVE_SUBROUTINE_MAX_LENGTH                    = 0x8E48
+       ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH            = 0x8E49
+       MAX_SUBROUTINES                                 = 0x8DE7
+       MAX_SUBROUTINE_UNIFORM_LOCATIONS                = 0x8DE8
+       NUM_COMPATIBLE_SUBROUTINES                      = 0x8E4A
+       COMPATIBLE_SUBROUTINES                          = 0x8E4B
+       use ARB_uniform_buffer_object       UNIFORM_SIZE
+       use ARB_uniform_buffer_object       UNIFORM_NAME_LENGTH
+
+###############################################################################
+
+# ARB Extension #91
+ARB_tessellation_shader enum:
+       PATCHES                                         = 0x000E
+       PATCH_VERTICES                                  = 0x8E72
+       PATCH_DEFAULT_INNER_LEVEL                       = 0x8E73
+       PATCH_DEFAULT_OUTER_LEVEL                       = 0x8E74
+       TESS_CONTROL_OUTPUT_VERTICES                    = 0x8E75
+       TESS_GEN_MODE                                   = 0x8E76
+       TESS_GEN_SPACING                                = 0x8E77
+       TESS_GEN_VERTEX_ORDER                           = 0x8E78
+       TESS_GEN_POINT_MODE                             = 0x8E79
+       use VERSION_1_1                     TRIANGLES
+       use VERSION_1_1                     QUADS
+       ISOLINES                                        = 0x8E7A
+       use VERSION_1_1                     EQUAL
+       FRACTIONAL_ODD                                  = 0x8E7B
+       FRACTIONAL_EVEN                                 = 0x8E7C
+       use VERSION_1_1                     CCW
+       use VERSION_1_1                     CW
+       MAX_PATCH_VERTICES                              = 0x8E7D
+       MAX_TESS_GEN_LEVEL                              = 0x8E7E
+       MAX_TESS_CONTROL_UNIFORM_COMPONENTS             = 0x8E7F
+       MAX_TESS_EVALUATION_UNIFORM_COMPONENTS          = 0x8E80
+       MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS            = 0x8E81
+       MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS         = 0x8E82
+       MAX_TESS_CONTROL_OUTPUT_COMPONENTS              = 0x8E83
+       MAX_TESS_PATCH_COMPONENTS                       = 0x8E84
+       MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS        = 0x8E85
+       MAX_TESS_EVALUATION_OUTPUT_COMPONENTS           = 0x8E86
+       MAX_TESS_CONTROL_UNIFORM_BLOCKS                 = 0x8E89
+       MAX_TESS_EVALUATION_UNIFORM_BLOCKS              = 0x8E8A
+       MAX_TESS_CONTROL_INPUT_COMPONENTS               = 0x886C
+       MAX_TESS_EVALUATION_INPUT_COMPONENTS            = 0x886D
+       MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS    = 0x8E1E
+       MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E1F
+       UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0
+       UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1
+       TESS_EVALUATION_SHADER                          = 0x8E87
+       TESS_CONTROL_SHADER                             = 0x8E88
+
+###############################################################################
+
+# ARB Extension #92
+ARB_texture_buffer_object_rgb32 enum:
+       use VERSION_3_0                     RGB32F
+       use VERSION_3_0                     RGB32UI
+       use VERSION_3_0                     RGB32I
+
+###############################################################################
+
+# ARB Extension #93
+ARB_transform_feedback2 enum:
+       TRANSFORM_FEEDBACK                              = 0x8E22
+       TRANSFORM_FEEDBACK_BUFFER_PAUSED                = 0x8E23
+       TRANSFORM_FEEDBACK_BUFFER_ACTIVE                = 0x8E24
+       TRANSFORM_FEEDBACK_BINDING                      = 0x8E25
+
+###############################################################################
+
+# ARB Extension #94
+ARB_transform_feedback3 enum:
+       MAX_TRANSFORM_FEEDBACK_BUFFERS                  = 0x8E70
+       MAX_VERTEX_STREAMS                              = 0x8E71
+
+
+###############################################################################
+#
+# non-ARB extensions follow, in registry order
+#
+###############################################################################
+
+###############################################################################
+
+# Extension #1
+EXT_abgr enum:
+       ABGR_EXT                                        = 0x8000
+
+###############################################################################
+
+# Extension #2
+EXT_blend_color enum:
+       CONSTANT_COLOR_EXT                              = 0x8001
+       ONE_MINUS_CONSTANT_COLOR_EXT                    = 0x8002
+       CONSTANT_ALPHA_EXT                              = 0x8003
+       ONE_MINUS_CONSTANT_ALPHA_EXT                    = 0x8004
+       BLEND_COLOR_EXT                                 = 0x8005 # 4 F
+
+###############################################################################
+
+# Extension #3
+EXT_polygon_offset enum:
+       POLYGON_OFFSET_EXT                              = 0x8037
+       POLYGON_OFFSET_FACTOR_EXT                       = 0x8038
+       POLYGON_OFFSET_BIAS_EXT                         = 0x8039 # 1 F
+
+###############################################################################
+
+# Extension #4
+EXT_texture enum:
+       ALPHA4_EXT                                      = 0x803B
+       ALPHA8_EXT                                      = 0x803C
+       ALPHA12_EXT                                     = 0x803D
+       ALPHA16_EXT                                     = 0x803E
+       LUMINANCE4_EXT                                  = 0x803F
+       LUMINANCE8_EXT                                  = 0x8040
+       LUMINANCE12_EXT                                 = 0x8041
+       LUMINANCE16_EXT                                 = 0x8042
+       LUMINANCE4_ALPHA4_EXT                           = 0x8043
+       LUMINANCE6_ALPHA2_EXT                           = 0x8044
+       LUMINANCE8_ALPHA8_EXT                           = 0x8045
+       LUMINANCE12_ALPHA4_EXT                          = 0x8046
+       LUMINANCE12_ALPHA12_EXT                         = 0x8047
+       LUMINANCE16_ALPHA16_EXT                         = 0x8048
+       INTENSITY_EXT                                   = 0x8049
+       INTENSITY4_EXT                                  = 0x804A
+       INTENSITY8_EXT                                  = 0x804B
+       INTENSITY12_EXT                                 = 0x804C
+       INTENSITY16_EXT                                 = 0x804D
+       RGB2_EXT                                        = 0x804E
+       RGB4_EXT                                        = 0x804F
+       RGB5_EXT                                        = 0x8050
+       RGB8_EXT                                        = 0x8051
+       RGB10_EXT                                       = 0x8052
+       RGB12_EXT                                       = 0x8053
+       RGB16_EXT                                       = 0x8054
+       RGBA2_EXT                                       = 0x8055
+       RGBA4_EXT                                       = 0x8056
+       RGB5_A1_EXT                                     = 0x8057
+       RGBA8_EXT                                       = 0x8058
+       RGB10_A2_EXT                                    = 0x8059
+       RGBA12_EXT                                      = 0x805A
+       RGBA16_EXT                                      = 0x805B
+       TEXTURE_RED_SIZE_EXT                            = 0x805C
+       TEXTURE_GREEN_SIZE_EXT                          = 0x805D
+       TEXTURE_BLUE_SIZE_EXT                           = 0x805E
+       TEXTURE_ALPHA_SIZE_EXT                          = 0x805F
+       TEXTURE_LUMINANCE_SIZE_EXT                      = 0x8060
+       TEXTURE_INTENSITY_SIZE_EXT                      = 0x8061
+       REPLACE_EXT                                     = 0x8062
+       PROXY_TEXTURE_1D_EXT                            = 0x8063
+       PROXY_TEXTURE_2D_EXT                            = 0x8064
+       TEXTURE_TOO_LARGE_EXT                           = 0x8065
+
+###############################################################################
+
+# Extension #5 - skipped
+
+###############################################################################
+
+# Extension #6
+EXT_texture3D enum:
+       PACK_SKIP_IMAGES_EXT                            = 0x806B # 1 I
+       PACK_IMAGE_HEIGHT_EXT                           = 0x806C # 1 F
+       UNPACK_SKIP_IMAGES_EXT                          = 0x806D # 1 I
+       UNPACK_IMAGE_HEIGHT_EXT                         = 0x806E # 1 F
+       TEXTURE_3D_EXT                                  = 0x806F # 1 I
+       PROXY_TEXTURE_3D_EXT                            = 0x8070
+       TEXTURE_DEPTH_EXT                               = 0x8071
+       TEXTURE_WRAP_R_EXT                              = 0x8072
+       MAX_3D_TEXTURE_SIZE_EXT                         = 0x8073 # 1 I
+
+###############################################################################
+
+# Extension #7
+SGIS_texture_filter4 enum:
+       FILTER4_SGIS                                    = 0x8146
+       TEXTURE_FILTER4_SIZE_SGIS                       = 0x8147
+
+###############################################################################
+
+# Extension #8 - skipped
+
+###############################################################################
+
+# No new tokens
+# Extension #9
+EXT_subtexture enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #10
+EXT_copy_texture enum:
+
+###############################################################################
+
+# Extension #11
+EXT_histogram enum:
+       HISTOGRAM_EXT                                   = 0x8024 # 1 I
+       PROXY_HISTOGRAM_EXT                             = 0x8025
+       HISTOGRAM_WIDTH_EXT                             = 0x8026
+       HISTOGRAM_FORMAT_EXT                            = 0x8027
+       HISTOGRAM_RED_SIZE_EXT                          = 0x8028
+       HISTOGRAM_GREEN_SIZE_EXT                        = 0x8029
+       HISTOGRAM_BLUE_SIZE_EXT                         = 0x802A
+       HISTOGRAM_ALPHA_SIZE_EXT                        = 0x802B
+       HISTOGRAM_LUMINANCE_SIZE_EXT                    = 0x802C
+       HISTOGRAM_SINK_EXT                              = 0x802D
+       MINMAX_EXT                                      = 0x802E # 1 I
+       MINMAX_FORMAT_EXT                               = 0x802F
+       MINMAX_SINK_EXT                                 = 0x8030
+       TABLE_TOO_LARGE_EXT                             = 0x8031
+
+###############################################################################
+
+# Extension #12
+EXT_convolution enum:
+       CONVOLUTION_1D_EXT                              = 0x8010 # 1 I
+       CONVOLUTION_2D_EXT                              = 0x8011 # 1 I
+       SEPARABLE_2D_EXT                                = 0x8012 # 1 I
+       CONVOLUTION_BORDER_MODE_EXT                     = 0x8013
+       CONVOLUTION_FILTER_SCALE_EXT                    = 0x8014
+       CONVOLUTION_FILTER_BIAS_EXT                     = 0x8015
+       REDUCE_EXT                                      = 0x8016
+       CONVOLUTION_FORMAT_EXT                          = 0x8017
+       CONVOLUTION_WIDTH_EXT                           = 0x8018
+       CONVOLUTION_HEIGHT_EXT                          = 0x8019
+       MAX_CONVOLUTION_WIDTH_EXT                       = 0x801A
+       MAX_CONVOLUTION_HEIGHT_EXT                      = 0x801B
+       POST_CONVOLUTION_RED_SCALE_EXT                  = 0x801C # 1 F
+       POST_CONVOLUTION_GREEN_SCALE_EXT                = 0x801D # 1 F
+       POST_CONVOLUTION_BLUE_SCALE_EXT                 = 0x801E # 1 F
+       POST_CONVOLUTION_ALPHA_SCALE_EXT                = 0x801F # 1 F
+       POST_CONVOLUTION_RED_BIAS_EXT                   = 0x8020 # 1 F
+       POST_CONVOLUTION_GREEN_BIAS_EXT                 = 0x8021 # 1 F
+       POST_CONVOLUTION_BLUE_BIAS_EXT                  = 0x8022 # 1 F
+       POST_CONVOLUTION_ALPHA_BIAS_EXT                 = 0x8023 # 1 F
+
+###############################################################################
+
+# Extension #13
+SGI_color_matrix enum:
+       COLOR_MATRIX_SGI                                = 0x80B1 # 16 F
+       COLOR_MATRIX_STACK_DEPTH_SGI                    = 0x80B2 # 1 I
+       MAX_COLOR_MATRIX_STACK_DEPTH_SGI                = 0x80B3 # 1 I
+       POST_COLOR_MATRIX_RED_SCALE_SGI                 = 0x80B4 # 1 F
+       POST_COLOR_MATRIX_GREEN_SCALE_SGI               = 0x80B5 # 1 F
+       POST_COLOR_MATRIX_BLUE_SCALE_SGI                = 0x80B6 # 1 F
+       POST_COLOR_MATRIX_ALPHA_SCALE_SGI               = 0x80B7 # 1 F
+       POST_COLOR_MATRIX_RED_BIAS_SGI                  = 0x80B8 # 1 F
+       POST_COLOR_MATRIX_GREEN_BIAS_SGI                = 0x80B9 # 1 F
+       POST_COLOR_MATRIX_BLUE_BIAS_SGI                 = 0x80BA # 1 F
+       POST_COLOR_MATRIX_ALPHA_BIAS_SGI                = 0x80BB # 1 F
+
+###############################################################################
+
+# Extension #14
+SGI_color_table enum:
+       COLOR_TABLE_SGI                                 = 0x80D0 # 1 I
+       POST_CONVOLUTION_COLOR_TABLE_SGI                = 0x80D1 # 1 I
+       POST_COLOR_MATRIX_COLOR_TABLE_SGI               = 0x80D2 # 1 I
+       PROXY_COLOR_TABLE_SGI                           = 0x80D3
+       PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI          = 0x80D4
+       PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI         = 0x80D5
+       COLOR_TABLE_SCALE_SGI                           = 0x80D6
+       COLOR_TABLE_BIAS_SGI                            = 0x80D7
+       COLOR_TABLE_FORMAT_SGI                          = 0x80D8
+       COLOR_TABLE_WIDTH_SGI                           = 0x80D9
+       COLOR_TABLE_RED_SIZE_SGI                        = 0x80DA
+       COLOR_TABLE_GREEN_SIZE_SGI                      = 0x80DB
+       COLOR_TABLE_BLUE_SIZE_SGI                       = 0x80DC
+       COLOR_TABLE_ALPHA_SIZE_SGI                      = 0x80DD
+       COLOR_TABLE_LUMINANCE_SIZE_SGI                  = 0x80DE
+       COLOR_TABLE_INTENSITY_SIZE_SGI                  = 0x80DF
+
+###############################################################################
+
+# Extension #15
+SGIS_pixel_texture enum:
+       PIXEL_TEXTURE_SGIS                              = 0x8353 # 1 I
+       PIXEL_FRAGMENT_RGB_SOURCE_SGIS                  = 0x8354 # 1 I
+       PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS                = 0x8355 # 1 I
+       PIXEL_GROUP_COLOR_SGIS                          = 0x8356 # 1 I
+
+###############################################################################
+
+# Extension #15a
+SGIX_pixel_texture enum:
+       PIXEL_TEX_GEN_SGIX                              = 0x8139 # 1 I
+       PIXEL_TEX_GEN_MODE_SGIX                         = 0x832B # 1 I
+
+###############################################################################
+
+# Extension #16
+SGIS_texture4D enum:
+       PACK_SKIP_VOLUMES_SGIS                          = 0x8130 # 1 I
+       PACK_IMAGE_DEPTH_SGIS                           = 0x8131 # 1 I
+       UNPACK_SKIP_VOLUMES_SGIS                        = 0x8132 # 1 I
+       UNPACK_IMAGE_DEPTH_SGIS                         = 0x8133 # 1 I
+       TEXTURE_4D_SGIS                                 = 0x8134 # 1 I
+       PROXY_TEXTURE_4D_SGIS                           = 0x8135
+       TEXTURE_4DSIZE_SGIS                             = 0x8136
+       TEXTURE_WRAP_Q_SGIS                             = 0x8137
+       MAX_4D_TEXTURE_SIZE_SGIS                        = 0x8138 # 1 I
+       TEXTURE_4D_BINDING_SGIS                         = 0x814F # 1 I
+
+###############################################################################
+
+# Extension #17
+SGI_texture_color_table enum:
+       TEXTURE_COLOR_TABLE_SGI                         = 0x80BC # 1 I
+       PROXY_TEXTURE_COLOR_TABLE_SGI                   = 0x80BD
+
+###############################################################################
+
+# Extension #18
+EXT_cmyka enum:
+       CMYK_EXT                                        = 0x800C
+       CMYKA_EXT                                       = 0x800D
+       PACK_CMYK_HINT_EXT                              = 0x800E # 1 I
+       UNPACK_CMYK_HINT_EXT                            = 0x800F # 1 I
+
+###############################################################################
+
+# Extension #19 - skipped
+
+###############################################################################
+
+# Extension #20
+EXT_texture_object enum:
+       TEXTURE_PRIORITY_EXT                            = 0x8066
+       TEXTURE_RESIDENT_EXT                            = 0x8067
+       TEXTURE_1D_BINDING_EXT                          = 0x8068
+       TEXTURE_2D_BINDING_EXT                          = 0x8069
+       TEXTURE_3D_BINDING_EXT                          = 0x806A # 1 I
+
+###############################################################################
+
+# Extension #21
+SGIS_detail_texture enum:
+       DETAIL_TEXTURE_2D_SGIS                          = 0x8095
+       DETAIL_TEXTURE_2D_BINDING_SGIS                  = 0x8096 # 1 I
+       LINEAR_DETAIL_SGIS                              = 0x8097
+       LINEAR_DETAIL_ALPHA_SGIS                        = 0x8098
+       LINEAR_DETAIL_COLOR_SGIS                        = 0x8099
+       DETAIL_TEXTURE_LEVEL_SGIS                       = 0x809A
+       DETAIL_TEXTURE_MODE_SGIS                        = 0x809B
+       DETAIL_TEXTURE_FUNC_POINTS_SGIS                 = 0x809C
+
+###############################################################################
+
+# Extension #22
+SGIS_sharpen_texture enum:
+       LINEAR_SHARPEN_SGIS                             = 0x80AD
+       LINEAR_SHARPEN_ALPHA_SGIS                       = 0x80AE
+       LINEAR_SHARPEN_COLOR_SGIS                       = 0x80AF
+       SHARPEN_TEXTURE_FUNC_POINTS_SGIS                = 0x80B0
+
+###############################################################################
+
+# Extension #23
+EXT_packed_pixels enum:
+       UNSIGNED_BYTE_3_3_2_EXT                         = 0x8032
+       UNSIGNED_SHORT_4_4_4_4_EXT                      = 0x8033
+       UNSIGNED_SHORT_5_5_5_1_EXT                      = 0x8034
+       UNSIGNED_INT_8_8_8_8_EXT                        = 0x8035
+       UNSIGNED_INT_10_10_10_2_EXT                     = 0x8036
+
+###############################################################################
+
+# Extension #24
+SGIS_texture_lod enum:
+       TEXTURE_MIN_LOD_SGIS                            = 0x813A
+       TEXTURE_MAX_LOD_SGIS                            = 0x813B
+       TEXTURE_BASE_LEVEL_SGIS                         = 0x813C
+       TEXTURE_MAX_LEVEL_SGIS                          = 0x813D
+
+###############################################################################
+
+# Extension #25
+SGIS_multisample enum:
+       MULTISAMPLE_SGIS                                = 0x809D # 1 I
+       SAMPLE_ALPHA_TO_MASK_SGIS                       = 0x809E # 1 I
+       SAMPLE_ALPHA_TO_ONE_SGIS                        = 0x809F # 1 I
+       SAMPLE_MASK_SGIS                                = 0x80A0 # 1 I
+       1PASS_SGIS                                      = 0x80A1
+       2PASS_0_SGIS                                    = 0x80A2
+       2PASS_1_SGIS                                    = 0x80A3
+       4PASS_0_SGIS                                    = 0x80A4
+       4PASS_1_SGIS                                    = 0x80A5
+       4PASS_2_SGIS                                    = 0x80A6
+       4PASS_3_SGIS                                    = 0x80A7
+       SAMPLE_BUFFERS_SGIS                             = 0x80A8 # 1 I
+       SAMPLES_SGIS                                    = 0x80A9 # 1 I
+       SAMPLE_MASK_VALUE_SGIS                          = 0x80AA # 1 F
+       SAMPLE_MASK_INVERT_SGIS                         = 0x80AB # 1 I
+       SAMPLE_PATTERN_SGIS                             = 0x80AC # 1 I
+
+###############################################################################
+
+# Extension #26 - no specification?
+# SGIS_premultiply_blend enum:
+
+##############################################################################
+
+# Extension #27
+# Diamond ships an otherwise identical IBM_rescale_normal extension;
+#  Dan Brokenshire says this is deprecated and should not be advertised.
+EXT_rescale_normal enum:
+       RESCALE_NORMAL_EXT                              = 0x803A # 1 I
+
+###############################################################################
+
+# Extension #28 - GLX_EXT_visual_info
+
+###############################################################################
+
+# Extension #29 - skipped
+
+###############################################################################
+
+# Extension #30
+EXT_vertex_array enum:
+       VERTEX_ARRAY_EXT                                = 0x8074
+       NORMAL_ARRAY_EXT                                = 0x8075
+       COLOR_ARRAY_EXT                                 = 0x8076
+       INDEX_ARRAY_EXT                                 = 0x8077
+       TEXTURE_COORD_ARRAY_EXT                         = 0x8078
+       EDGE_FLAG_ARRAY_EXT                             = 0x8079
+       VERTEX_ARRAY_SIZE_EXT                           = 0x807A
+       VERTEX_ARRAY_TYPE_EXT                           = 0x807B
+       VERTEX_ARRAY_STRIDE_EXT                         = 0x807C
+       VERTEX_ARRAY_COUNT_EXT                          = 0x807D # 1 I
+       NORMAL_ARRAY_TYPE_EXT                           = 0x807E
+       NORMAL_ARRAY_STRIDE_EXT                         = 0x807F
+       NORMAL_ARRAY_COUNT_EXT                          = 0x8080 # 1 I
+       COLOR_ARRAY_SIZE_EXT                            = 0x8081
+       COLOR_ARRAY_TYPE_EXT                            = 0x8082
+       COLOR_ARRAY_STRIDE_EXT                          = 0x8083
+       COLOR_ARRAY_COUNT_EXT                           = 0x8084 # 1 I
+       INDEX_ARRAY_TYPE_EXT                            = 0x8085
+       INDEX_ARRAY_STRIDE_EXT                          = 0x8086
+       INDEX_ARRAY_COUNT_EXT                           = 0x8087 # 1 I
+       TEXTURE_COORD_ARRAY_SIZE_EXT                    = 0x8088
+       TEXTURE_COORD_ARRAY_TYPE_EXT                    = 0x8089
+       TEXTURE_COORD_ARRAY_STRIDE_EXT                  = 0x808A
+       TEXTURE_COORD_ARRAY_COUNT_EXT                   = 0x808B # 1 I
+       EDGE_FLAG_ARRAY_STRIDE_EXT                      = 0x808C
+       EDGE_FLAG_ARRAY_COUNT_EXT                       = 0x808D # 1 I
+       VERTEX_ARRAY_POINTER_EXT                        = 0x808E
+       NORMAL_ARRAY_POINTER_EXT                        = 0x808F
+       COLOR_ARRAY_POINTER_EXT                         = 0x8090
+       INDEX_ARRAY_POINTER_EXT                         = 0x8091
+       TEXTURE_COORD_ARRAY_POINTER_EXT                 = 0x8092
+       EDGE_FLAG_ARRAY_POINTER_EXT                     = 0x8093
+
+###############################################################################
+
+# Extension #31
+EXT_misc_attribute enum:
+#       MISC_BIT                                        = 0x????
+
+###############################################################################
+
+# Extension #32
+SGIS_generate_mipmap enum:
+       GENERATE_MIPMAP_SGIS                            = 0x8191
+       GENERATE_MIPMAP_HINT_SGIS                       = 0x8192 # 1 I
+
+###############################################################################
+
+# Extension #33
+SGIX_clipmap enum:
+       LINEAR_CLIPMAP_LINEAR_SGIX                      = 0x8170
+       TEXTURE_CLIPMAP_CENTER_SGIX                     = 0x8171
+       TEXTURE_CLIPMAP_FRAME_SGIX                      = 0x8172
+       TEXTURE_CLIPMAP_OFFSET_SGIX                     = 0x8173
+       TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX              = 0x8174
+       TEXTURE_CLIPMAP_LOD_OFFSET_SGIX                 = 0x8175
+       TEXTURE_CLIPMAP_DEPTH_SGIX                      = 0x8176
+       MAX_CLIPMAP_DEPTH_SGIX                          = 0x8177 # 1 I
+       MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX                  = 0x8178 # 1 I
+       NEAREST_CLIPMAP_NEAREST_SGIX                    = 0x844D
+       NEAREST_CLIPMAP_LINEAR_SGIX                     = 0x844E
+       LINEAR_CLIPMAP_NEAREST_SGIX                     = 0x844F
+
+###############################################################################
+
+# Extension #34
+SGIX_shadow enum:
+       TEXTURE_COMPARE_SGIX                            = 0x819A
+       TEXTURE_COMPARE_OPERATOR_SGIX                   = 0x819B
+       TEXTURE_LEQUAL_R_SGIX                           = 0x819C
+       TEXTURE_GEQUAL_R_SGIX                           = 0x819D
+
+###############################################################################
+
+# Extension #35
+SGIS_texture_edge_clamp enum:
+       CLAMP_TO_EDGE_SGIS                              = 0x812F
+
+###############################################################################
+
+# Extension #36
+# Promoted to ARB_texture_border_clamp
+SGIS_texture_border_clamp enum:
+       CLAMP_TO_BORDER_SGIS                            = 0x812D
+
+###############################################################################
+
+# Extension #37
+EXT_blend_minmax enum:
+       FUNC_ADD_EXT                                    = 0x8006
+       MIN_EXT                                         = 0x8007
+       MAX_EXT                                         = 0x8008
+       BLEND_EQUATION_EXT                              = 0x8009 # 1 I
+
+###############################################################################
+
+# Extension #38
+EXT_blend_subtract enum:
+       FUNC_SUBTRACT_EXT                               = 0x800A
+       FUNC_REVERSE_SUBTRACT_EXT                       = 0x800B
+
+###############################################################################
+
+# No new tokens
+# Extension #39
+EXT_blend_logic_op enum:
+
+###############################################################################
+
+# Extension #40 - GLX_SGI_swap_control
+# Extension #41 - GLX_SGI_video_sync
+# Extension #42 - GLX_SGI_make_current_read
+# Extension #43 - GLX_SGIX_video_source
+# Extension #44 - GLX_EXT_visual_rating
+
+###############################################################################
+
+# Extension #45
+SGIX_interlace enum:
+       INTERLACE_SGIX                                  = 0x8094 # 1 I
+
+###############################################################################
+
+# Extension #46
+SGIX_pixel_tiles enum:
+       PIXEL_TILE_BEST_ALIGNMENT_SGIX                  = 0x813E # 1 I
+       PIXEL_TILE_CACHE_INCREMENT_SGIX                 = 0x813F # 1 I
+       PIXEL_TILE_WIDTH_SGIX                           = 0x8140 # 1 I
+       PIXEL_TILE_HEIGHT_SGIX                          = 0x8141 # 1 I
+       PIXEL_TILE_GRID_WIDTH_SGIX                      = 0x8142 # 1 I
+       PIXEL_TILE_GRID_HEIGHT_SGIX                     = 0x8143 # 1 I
+       PIXEL_TILE_GRID_DEPTH_SGIX                      = 0x8144 # 1 I
+       PIXEL_TILE_CACHE_SIZE_SGIX                      = 0x8145 # 1 I
+
+###############################################################################
+
+# Extension #47 - GLX_EXT_import_context
+
+###############################################################################
+
+# Extension #48 - skipped
+
+###############################################################################
+
+# Extension #49 - GLX_SGIX_fbconfig
+# Extension #50 - GLX_SGIX_pbuffer
+
+###############################################################################
+
+# Extension #51
+SGIS_texture_select enum:
+       DUAL_ALPHA4_SGIS                                = 0x8110
+       DUAL_ALPHA8_SGIS                                = 0x8111
+       DUAL_ALPHA12_SGIS                               = 0x8112
+       DUAL_ALPHA16_SGIS                               = 0x8113
+       DUAL_LUMINANCE4_SGIS                            = 0x8114
+       DUAL_LUMINANCE8_SGIS                            = 0x8115
+       DUAL_LUMINANCE12_SGIS                           = 0x8116
+       DUAL_LUMINANCE16_SGIS                           = 0x8117
+       DUAL_INTENSITY4_SGIS                            = 0x8118
+       DUAL_INTENSITY8_SGIS                            = 0x8119
+       DUAL_INTENSITY12_SGIS                           = 0x811A
+       DUAL_INTENSITY16_SGIS                           = 0x811B
+       DUAL_LUMINANCE_ALPHA4_SGIS                      = 0x811C
+       DUAL_LUMINANCE_ALPHA8_SGIS                      = 0x811D
+       QUAD_ALPHA4_SGIS                                = 0x811E
+       QUAD_ALPHA8_SGIS                                = 0x811F
+       QUAD_LUMINANCE4_SGIS                            = 0x8120
+       QUAD_LUMINANCE8_SGIS                            = 0x8121
+       QUAD_INTENSITY4_SGIS                            = 0x8122
+       QUAD_INTENSITY8_SGIS                            = 0x8123
+       DUAL_TEXTURE_SELECT_SGIS                        = 0x8124
+       QUAD_TEXTURE_SELECT_SGIS                        = 0x8125
+
+###############################################################################
+
+# Extension #52
+SGIX_sprite enum:
+       SPRITE_SGIX                                     = 0x8148 # 1 I
+       SPRITE_MODE_SGIX                                = 0x8149 # 1 I
+       SPRITE_AXIS_SGIX                                = 0x814A # 3 F
+       SPRITE_TRANSLATION_SGIX                         = 0x814B # 3 F
+       SPRITE_AXIAL_SGIX                               = 0x814C
+       SPRITE_OBJECT_ALIGNED_SGIX                      = 0x814D
+       SPRITE_EYE_ALIGNED_SGIX                         = 0x814E
+
+###############################################################################
+
+# Extension #53
+SGIX_texture_multi_buffer enum:
+       TEXTURE_MULTI_BUFFER_HINT_SGIX                  = 0x812E
+
+###############################################################################
+
+# Extension #54
+# EXT form promoted from SGIS form; both are included
+EXT_point_parameters enum:
+       POINT_SIZE_MIN_EXT                              = 0x8126 # 1 F
+       POINT_SIZE_MAX_EXT                              = 0x8127 # 1 F
+       POINT_FADE_THRESHOLD_SIZE_EXT                   = 0x8128 # 1 F
+       DISTANCE_ATTENUATION_EXT                        = 0x8129 # 3 F
+
+SGIS_point_parameters enum:
+       POINT_SIZE_MIN_SGIS                             = 0x8126 # 1 F
+       POINT_SIZE_MAX_SGIS                             = 0x8127 # 1 F
+       POINT_FADE_THRESHOLD_SIZE_SGIS                  = 0x8128 # 1 F
+       DISTANCE_ATTENUATION_SGIS                       = 0x8129 # 3 F
+
+###############################################################################
+
+# Extension #55
+SGIX_instruments enum:
+       INSTRUMENT_BUFFER_POINTER_SGIX                  = 0x8180
+       INSTRUMENT_MEASUREMENTS_SGIX                    = 0x8181 # 1 I
+
+###############################################################################
+
+# Extension #56
+SGIX_texture_scale_bias enum:
+       POST_TEXTURE_FILTER_BIAS_SGIX                   = 0x8179
+       POST_TEXTURE_FILTER_SCALE_SGIX                  = 0x817A
+       POST_TEXTURE_FILTER_BIAS_RANGE_SGIX             = 0x817B # 2 F
+       POST_TEXTURE_FILTER_SCALE_RANGE_SGIX            = 0x817C # 2 F
+
+###############################################################################
+
+# Extension #57
+SGIX_framezoom enum:
+       FRAMEZOOM_SGIX                                  = 0x818B # 1 I
+       FRAMEZOOM_FACTOR_SGIX                           = 0x818C # 1 I
+       MAX_FRAMEZOOM_FACTOR_SGIX                       = 0x818D # 1 I
+
+###############################################################################
+
+# No new tokens
+# Extension #58
+SGIX_tag_sample_buffer enum:
+
+###############################################################################
+
+# Extension #59
+FfdMaskSGIX enum:
+       TEXTURE_DEFORMATION_BIT_SGIX                    = 0x00000001
+       GEOMETRY_DEFORMATION_BIT_SGIX                   = 0x00000002
+SGIX_polynomial_ffd enum:
+       GEOMETRY_DEFORMATION_SGIX                       = 0x8194
+       TEXTURE_DEFORMATION_SGIX                        = 0x8195
+       DEFORMATIONS_MASK_SGIX                          = 0x8196 # 1 I
+       MAX_DEFORMATION_ORDER_SGIX                      = 0x8197
+
+###############################################################################
+
+# Extension #60
+SGIX_reference_plane enum:
+       REFERENCE_PLANE_SGIX                            = 0x817D # 1 I
+       REFERENCE_PLANE_EQUATION_SGIX                   = 0x817E # 4 F
+
+###############################################################################
+
+# No new tokens
+# Extension #61
+SGIX_flush_raster enum:
+
+###############################################################################
+
+# Extension #62 - GLX_SGIX_cushion
+
+###############################################################################
+
+# Extension #63
+SGIX_depth_texture enum:
+       DEPTH_COMPONENT16_SGIX                          = 0x81A5
+       DEPTH_COMPONENT24_SGIX                          = 0x81A6
+       DEPTH_COMPONENT32_SGIX                          = 0x81A7
+
+###############################################################################
+
+# Extension #64
+SGIS_fog_function enum:
+       FOG_FUNC_SGIS                                   = 0x812A
+       FOG_FUNC_POINTS_SGIS                            = 0x812B # 1 I
+       MAX_FOG_FUNC_POINTS_SGIS                        = 0x812C # 1 I
+
+###############################################################################
+
+# Extension #65
+SGIX_fog_offset enum:
+       FOG_OFFSET_SGIX                                 = 0x8198 # 1 I
+       FOG_OFFSET_VALUE_SGIX                           = 0x8199 # 4 F
+
+###############################################################################
+
+# Extension #66
+HP_image_transform enum:
+       IMAGE_SCALE_X_HP                                = 0x8155
+       IMAGE_SCALE_Y_HP                                = 0x8156
+       IMAGE_TRANSLATE_X_HP                            = 0x8157
+       IMAGE_TRANSLATE_Y_HP                            = 0x8158
+       IMAGE_ROTATE_ANGLE_HP                           = 0x8159
+       IMAGE_ROTATE_ORIGIN_X_HP                        = 0x815A
+       IMAGE_ROTATE_ORIGIN_Y_HP                        = 0x815B
+       IMAGE_MAG_FILTER_HP                             = 0x815C
+       IMAGE_MIN_FILTER_HP                             = 0x815D
+       IMAGE_CUBIC_WEIGHT_HP                           = 0x815E
+       CUBIC_HP                                        = 0x815F
+       AVERAGE_HP                                      = 0x8160
+       IMAGE_TRANSFORM_2D_HP                           = 0x8161
+       POST_IMAGE_TRANSFORM_COLOR_TABLE_HP             = 0x8162
+       PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP       = 0x8163
+
+###############################################################################
+
+# Extension #67
+HP_convolution_border_modes enum:
+       IGNORE_BORDER_HP                                = 0x8150
+       CONSTANT_BORDER_HP                              = 0x8151
+       REPLICATE_BORDER_HP                             = 0x8153
+       CONVOLUTION_BORDER_COLOR_HP                     = 0x8154
+
+###############################################################################
+
+# Extension #68
+# (Unknown token values???)
+INGR_palette_buffer enum:
+
+###############################################################################
+
+# Extension #69
+SGIX_texture_add_env enum:
+       TEXTURE_ENV_BIAS_SGIX                           = 0x80BE
+
+###############################################################################
+
+# Extension #70 - skipped
+# Extension #71 - skipped
+# Extension #72 - skipped
+# Extension #73 - skipped
+
+###############################################################################
+
+# No new tokens
+# Extension #74
+EXT_color_subtable enum:
+
+###############################################################################
+
+# Extension #75 - GLU_EXT_object_space_tess
+
+###############################################################################
+
+# Extension #76
+PGI_vertex_hints enum:
+       VERTEX_DATA_HINT_PGI                            = 0x1A22A
+       VERTEX_CONSISTENT_HINT_PGI                      = 0x1A22B
+       MATERIAL_SIDE_HINT_PGI                          = 0x1A22C
+       MAX_VERTEX_HINT_PGI                             = 0x1A22D
+       COLOR3_BIT_PGI                                  = 0x00010000
+       COLOR4_BIT_PGI                                  = 0x00020000
+       EDGEFLAG_BIT_PGI                                = 0x00040000
+       INDEX_BIT_PGI                                   = 0x00080000
+       MAT_AMBIENT_BIT_PGI                             = 0x00100000
+       MAT_AMBIENT_AND_DIFFUSE_BIT_PGI                 = 0x00200000
+       MAT_DIFFUSE_BIT_PGI                             = 0x00400000
+       MAT_EMISSION_BIT_PGI                            = 0x00800000
+       MAT_COLOR_INDEXES_BIT_PGI                       = 0x01000000
+       MAT_SHININESS_BIT_PGI                           = 0x02000000
+       MAT_SPECULAR_BIT_PGI                            = 0x04000000
+       NORMAL_BIT_PGI                                  = 0x08000000
+       TEXCOORD1_BIT_PGI                               = 0x10000000
+       TEXCOORD2_BIT_PGI                               = 0x20000000
+       TEXCOORD3_BIT_PGI                               = 0x40000000
+       TEXCOORD4_BIT_PGI                               = 0x80000000
+       VERTEX23_BIT_PGI                                = 0x00000004
+       VERTEX4_BIT_PGI                                 = 0x00000008
+
+###############################################################################
+
+# Extension #77
+PGI_misc_hints enum:
+       PREFER_DOUBLEBUFFER_HINT_PGI                    = 0x1A1F8
+       CONSERVE_MEMORY_HINT_PGI                        = 0x1A1FD
+       RECLAIM_MEMORY_HINT_PGI                         = 0x1A1FE
+       NATIVE_GRAPHICS_HANDLE_PGI                      = 0x1A202
+       NATIVE_GRAPHICS_BEGIN_HINT_PGI                  = 0x1A203
+       NATIVE_GRAPHICS_END_HINT_PGI                    = 0x1A204
+       ALWAYS_FAST_HINT_PGI                            = 0x1A20C
+       ALWAYS_SOFT_HINT_PGI                            = 0x1A20D
+       ALLOW_DRAW_OBJ_HINT_PGI                         = 0x1A20E
+       ALLOW_DRAW_WIN_HINT_PGI                         = 0x1A20F
+       ALLOW_DRAW_FRG_HINT_PGI                         = 0x1A210
+       ALLOW_DRAW_MEM_HINT_PGI                         = 0x1A211
+       STRICT_DEPTHFUNC_HINT_PGI                       = 0x1A216
+       STRICT_LIGHTING_HINT_PGI                        = 0x1A217
+       STRICT_SCISSOR_HINT_PGI                         = 0x1A218
+       FULL_STIPPLE_HINT_PGI                           = 0x1A219
+       CLIP_NEAR_HINT_PGI                              = 0x1A220
+       CLIP_FAR_HINT_PGI                               = 0x1A221
+       WIDE_LINE_HINT_PGI                              = 0x1A222
+       BACK_NORMALS_HINT_PGI                           = 0x1A223
+
+###############################################################################
+
+# Extension #78
+EXT_paletted_texture enum:
+       COLOR_INDEX1_EXT                                = 0x80E2
+       COLOR_INDEX2_EXT                                = 0x80E3
+       COLOR_INDEX4_EXT                                = 0x80E4
+       COLOR_INDEX8_EXT                                = 0x80E5
+       COLOR_INDEX12_EXT                               = 0x80E6
+       COLOR_INDEX16_EXT                               = 0x80E7
+       TEXTURE_INDEX_SIZE_EXT                          = 0x80ED
+
+###############################################################################
+
+# Extension #79
+EXT_clip_volume_hint enum:
+       CLIP_VOLUME_CLIPPING_HINT_EXT                   = 0x80F0
+
+###############################################################################
+
+# Extension #80
+SGIX_list_priority enum:
+       LIST_PRIORITY_SGIX                              = 0x8182
+
+###############################################################################
+
+# Extension #81
+SGIX_ir_instrument1 enum:
+       IR_INSTRUMENT1_SGIX                             = 0x817F # 1 I
+
+###############################################################################
+
+# Extension #82
+SGIX_calligraphic_fragment enum:
+       CALLIGRAPHIC_FRAGMENT_SGIX                      = 0x8183 # 1 I
+
+###############################################################################
+
+# Extension #83 - GLX_SGIX_video_resize
+
+###############################################################################
+
+# Extension #84
+SGIX_texture_lod_bias enum:
+       TEXTURE_LOD_BIAS_S_SGIX                         = 0x818E
+       TEXTURE_LOD_BIAS_T_SGIX                         = 0x818F
+       TEXTURE_LOD_BIAS_R_SGIX                         = 0x8190
+
+###############################################################################
+
+# Extension #85 - skipped
+
+###############################################################################
+
+# Extension #86 - GLX_SGIX_dmbuffer
+
+###############################################################################
+
+# Extension #87 - skipped
+# Extension #88 - skipped
+# Extension #89 - skipped
+
+###############################################################################
+
+# Extension #90
+SGIX_shadow_ambient enum:
+       SHADOW_AMBIENT_SGIX                             = 0x80BF
+
+###############################################################################
+
+# Extension #91 - GLX_SGIX_swap_group
+# Extension #92 - GLX_SGIX_swap_barrier
+
+###############################################################################
+
+# No new tokens
+# Extension #93
+EXT_index_texture enum:
+
+###############################################################################
+
+# Extension #94
+# Promoted from SGI?
+EXT_index_material enum:
+       INDEX_MATERIAL_EXT                              = 0x81B8
+       INDEX_MATERIAL_PARAMETER_EXT                    = 0x81B9
+       INDEX_MATERIAL_FACE_EXT                         = 0x81BA
+
+###############################################################################
+
+# Extension #95
+# Promoted from SGI?
+EXT_index_func enum:
+       INDEX_TEST_EXT                                  = 0x81B5
+       INDEX_TEST_FUNC_EXT                             = 0x81B6
+       INDEX_TEST_REF_EXT                              = 0x81B7
+
+###############################################################################
+
+# Extension #96
+# Promoted from SGI?
+EXT_index_array_formats enum:
+       IUI_V2F_EXT                                     = 0x81AD
+       IUI_V3F_EXT                                     = 0x81AE
+       IUI_N3F_V2F_EXT                                 = 0x81AF
+       IUI_N3F_V3F_EXT                                 = 0x81B0
+       T2F_IUI_V2F_EXT                                 = 0x81B1
+       T2F_IUI_V3F_EXT                                 = 0x81B2
+       T2F_IUI_N3F_V2F_EXT                             = 0x81B3
+       T2F_IUI_N3F_V3F_EXT                             = 0x81B4
+
+###############################################################################
+
+# Extension #97
+# Promoted from SGI?
+EXT_compiled_vertex_array enum:
+       ARRAY_ELEMENT_LOCK_FIRST_EXT                    = 0x81A8
+       ARRAY_ELEMENT_LOCK_COUNT_EXT                    = 0x81A9
+
+###############################################################################
+
+# Extension #98
+# Promoted from SGI?
+EXT_cull_vertex enum:
+       CULL_VERTEX_EXT                                 = 0x81AA
+       CULL_VERTEX_EYE_POSITION_EXT                    = 0x81AB
+       CULL_VERTEX_OBJECT_POSITION_EXT                 = 0x81AC
+
+###############################################################################
+
+# Extension #99 - skipped
+
+###############################################################################
+
+# Extension #100 - GLU_EXT_nurbs_tessellator
+
+###############################################################################
+
+# Extension #101
+SGIX_ycrcb enum:
+       YCRCB_422_SGIX                                  = 0x81BB
+       YCRCB_444_SGIX                                  = 0x81BC
+
+###############################################################################
+
+# Extension #102
+SGIX_fragment_lighting enum:
+       FRAGMENT_LIGHTING_SGIX                          = 0x8400 # 1 I
+       FRAGMENT_COLOR_MATERIAL_SGIX                    = 0x8401 # 1 I
+       FRAGMENT_COLOR_MATERIAL_FACE_SGIX               = 0x8402 # 1 I
+       FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX          = 0x8403 # 1 I
+       MAX_FRAGMENT_LIGHTS_SGIX                        = 0x8404 # 1 I
+       MAX_ACTIVE_LIGHTS_SGIX                          = 0x8405 # 1 I
+       CURRENT_RASTER_NORMAL_SGIX                      = 0x8406 # 1 I
+       LIGHT_ENV_MODE_SGIX                             = 0x8407 # 1 I
+       FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX          = 0x8408 # 1 I
+       FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX              = 0x8409 # 1 I
+       FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX               = 0x840A # 4 F
+       FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX  = 0x840B # 1 I
+       FRAGMENT_LIGHT0_SGIX                            = 0x840C # 1 I
+       FRAGMENT_LIGHT1_SGIX                            = 0x840D
+       FRAGMENT_LIGHT2_SGIX                            = 0x840E
+       FRAGMENT_LIGHT3_SGIX                            = 0x840F
+       FRAGMENT_LIGHT4_SGIX                            = 0x8410
+       FRAGMENT_LIGHT5_SGIX                            = 0x8411
+       FRAGMENT_LIGHT6_SGIX                            = 0x8412
+       FRAGMENT_LIGHT7_SGIX                            = 0x8413
+
+###############################################################################
+
+# Extension #103 - skipped
+# Extension #104 - skipped
+# Extension #105 - skipped
+# Extension #106 - skipped
+# Extension #107 - skipped
+# Extension #108 - skipped
+# Extension #109 - skipped
+
+###############################################################################
+
+# Extension #110
+IBM_rasterpos_clip enum:
+       RASTER_POSITION_UNCLIPPED_IBM                   = 0x19262
+
+###############################################################################
+
+# Extension #111
+HP_texture_lighting enum:
+       TEXTURE_LIGHTING_MODE_HP                        = 0x8167
+       TEXTURE_POST_SPECULAR_HP                        = 0x8168
+       TEXTURE_PRE_SPECULAR_HP                         = 0x8169
+
+###############################################################################
+
+# Extension #112
+EXT_draw_range_elements enum:
+       MAX_ELEMENTS_VERTICES_EXT                       = 0x80E8
+       MAX_ELEMENTS_INDICES_EXT                        = 0x80E9
+
+###############################################################################
+
+# Extension #113
+WIN_phong_shading enum:
+       PHONG_WIN                                       = 0x80EA
+       PHONG_HINT_WIN                                  = 0x80EB
+
+###############################################################################
+
+# Extension #114
+WIN_specular_fog enum:
+       FOG_SPECULAR_TEXTURE_WIN                        = 0x80EC
+
+###############################################################################
+
+# Extension #115 - skipped
+# Extension #116 - skipped
+
+###############################################################################
+
+# Extension #117
+EXT_light_texture enum:
+       FRAGMENT_MATERIAL_EXT                           = 0x8349
+       FRAGMENT_NORMAL_EXT                             = 0x834A
+       FRAGMENT_COLOR_EXT                              = 0x834C
+       ATTENUATION_EXT                                 = 0x834D
+       SHADOW_ATTENUATION_EXT                          = 0x834E
+       TEXTURE_APPLICATION_MODE_EXT                    = 0x834F # 1 I
+       TEXTURE_LIGHT_EXT                               = 0x8350 # 1 I
+       TEXTURE_MATERIAL_FACE_EXT                       = 0x8351 # 1 I
+       TEXTURE_MATERIAL_PARAMETER_EXT                  = 0x8352 # 1 I
+       use EXT_fog_coord                   FRAGMENT_DEPTH_EXT
+
+###############################################################################
+
+# Extension #118 - skipped
+
+###############################################################################
+
+# Extension #119
+SGIX_blend_alpha_minmax enum:
+       ALPHA_MIN_SGIX                                  = 0x8320
+       ALPHA_MAX_SGIX                                  = 0x8321
+
+###############################################################################
+
+# Extension #120 - skipped
+# Extension #121 - skipped
+# Extension #122 - skipped
+# Extension #123 - skipped
+# Extension #124 - skipped
+# Extension #125 - skipped
+
+###############################################################################
+
+# Extension #126
+SGIX_impact_pixel_texture enum:
+       PIXEL_TEX_GEN_Q_CEILING_SGIX                    = 0x8184
+       PIXEL_TEX_GEN_Q_ROUND_SGIX                      = 0x8185
+       PIXEL_TEX_GEN_Q_FLOOR_SGIX                      = 0x8186
+       PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX                = 0x8187
+       PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX             = 0x8188
+       PIXEL_TEX_GEN_ALPHA_LS_SGIX                     = 0x8189
+       PIXEL_TEX_GEN_ALPHA_MS_SGIX                     = 0x818A
+
+###############################################################################
+
+# Extension #127 - skipped
+# Extension #128 - skipped
+
+###############################################################################
+
+# Extension #129
+EXT_bgra enum:
+       BGR_EXT                                         = 0x80E0
+       BGRA_EXT                                        = 0x80E1
+
+###############################################################################
+
+# Extension #130 - skipped
+# Extension #131 - skipped
+
+###############################################################################
+
+# Extension #132
+SGIX_async enum:
+       ASYNC_MARKER_SGIX                               = 0x8329
+
+###############################################################################
+
+# Extension #133
+SGIX_async_pixel enum:
+       ASYNC_TEX_IMAGE_SGIX                            = 0x835C
+       ASYNC_DRAW_PIXELS_SGIX                          = 0x835D
+       ASYNC_READ_PIXELS_SGIX                          = 0x835E
+       MAX_ASYNC_TEX_IMAGE_SGIX                        = 0x835F
+       MAX_ASYNC_DRAW_PIXELS_SGIX                      = 0x8360
+       MAX_ASYNC_READ_PIXELS_SGIX                      = 0x8361
+
+###############################################################################
+
+# Extension #134
+SGIX_async_histogram enum:
+       ASYNC_HISTOGRAM_SGIX                            = 0x832C
+       MAX_ASYNC_HISTOGRAM_SGIX                        = 0x832D
+
+###############################################################################
+
+# Intel has not implemented this; enums never assigned
+# Extension #135
+INTEL_texture_scissor enum:
+#       TEXTURE_SCISSOR_INTEL                           = 0x????
+#       TEXTURE_SCISSOR_INTEL                           = 0x????
+#       TEXTURE_SCISSOR_FUNC_INTEL                      = 0x????
+#       TEXTURE_SCISSOR_S_INTEL                         = 0x????
+#       TEXTURE_SCISSOR_T_INTEL                         = 0x????
+#       TEXTURE_SCISSOR_R_INTEL                         = 0x????
+
+###############################################################################
+
+# Extension #136
+INTEL_parallel_arrays enum:
+       PARALLEL_ARRAYS_INTEL                           = 0x83F4
+       VERTEX_ARRAY_PARALLEL_POINTERS_INTEL            = 0x83F5
+       NORMAL_ARRAY_PARALLEL_POINTERS_INTEL            = 0x83F6
+       COLOR_ARRAY_PARALLEL_POINTERS_INTEL             = 0x83F7
+       TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL     = 0x83F8
+
+###############################################################################
+
+# Extension #137
+HP_occlusion_test enum:
+       OCCLUSION_TEST_HP                               = 0x8165
+       OCCLUSION_TEST_RESULT_HP                        = 0x8166
+
+###############################################################################
+
+# Extension #138
+EXT_pixel_transform enum:
+       PIXEL_TRANSFORM_2D_EXT                          = 0x8330
+       PIXEL_MAG_FILTER_EXT                            = 0x8331
+       PIXEL_MIN_FILTER_EXT                            = 0x8332
+       PIXEL_CUBIC_WEIGHT_EXT                          = 0x8333
+       CUBIC_EXT                                       = 0x8334
+       AVERAGE_EXT                                     = 0x8335
+       PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT              = 0x8336
+       MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT          = 0x8337
+       PIXEL_TRANSFORM_2D_MATRIX_EXT                   = 0x8338
+
+###############################################################################
+
+# Unknown enum values
+# Extension #139
+EXT_pixel_transform_color_table enum:
+
+#       PIXEL_TRANSFORM_COLOR_TABLE_EXT
+#       PROXY_PIXEL_TRANSFORM_COLOR_TABLE_EXT
+
+###############################################################################
+
+# Extension #140 - skipped
+
+###############################################################################
+
+# Extension #141
+EXT_shared_texture_palette enum:
+       SHARED_TEXTURE_PALETTE_EXT                      = 0x81FB
+
+###############################################################################
+
+# Extension #142 - GLX_SGIS_blended_overlay
+
+###############################################################################
+
+# Extension #143 - SGIS_shared_multisample
+#      MULTISAMPLE_SUB_RECT_POSITION_SGIS              = <TBD>
+#      MULTISAMPLE_SUB_RECT_DIMS_SGIS                  = <TBD>
+
+###############################################################################
+
+# Extension #144
+EXT_separate_specular_color enum:
+       LIGHT_MODEL_COLOR_CONTROL_EXT                   = 0x81F8
+       SINGLE_COLOR_EXT                                = 0x81F9
+       SEPARATE_SPECULAR_COLOR_EXT                     = 0x81FA
+
+###############################################################################
+
+# Extension #145
+EXT_secondary_color enum:
+       COLOR_SUM_EXT                                   = 0x8458 # 1 I
+       CURRENT_SECONDARY_COLOR_EXT                     = 0x8459 # 3 F
+       SECONDARY_COLOR_ARRAY_SIZE_EXT                  = 0x845A # 1 I
+       SECONDARY_COLOR_ARRAY_TYPE_EXT                  = 0x845B # 1 I
+       SECONDARY_COLOR_ARRAY_STRIDE_EXT                = 0x845C # 1 I
+       SECONDARY_COLOR_ARRAY_POINTER_EXT               = 0x845D
+       SECONDARY_COLOR_ARRAY_EXT                       = 0x845E # 1 I
+
+###############################################################################
+
+# Dead extension - EXT_texture_env_combine was finished instead
+# Extension #146
+#EXT_texture_env enum:
+
+###############################################################################
+
+# Extension #147
+EXT_texture_perturb_normal enum:
+       PERTURB_EXT                                     = 0x85AE
+       TEXTURE_NORMAL_EXT                              = 0x85AF
+
+###############################################################################
+
+# No new tokens
+# Extension #148
+# Diamond ships an otherwise identical IBM_multi_draw_arrays extension;
+#  Dan Brokenshire says this is deprecated and should not be advertised.
+EXT_multi_draw_arrays enum:
+
+###############################################################################
+
+# Extension #149
+EXT_fog_coord enum:
+       FOG_COORDINATE_SOURCE_EXT                       = 0x8450 # 1 I
+       FOG_COORDINATE_EXT                              = 0x8451
+       FRAGMENT_DEPTH_EXT                              = 0x8452
+       CURRENT_FOG_COORDINATE_EXT                      = 0x8453 # 1 F
+       FOG_COORDINATE_ARRAY_TYPE_EXT                   = 0x8454 # 1 I
+       FOG_COORDINATE_ARRAY_STRIDE_EXT                 = 0x8455 # 1 I
+       FOG_COORDINATE_ARRAY_POINTER_EXT                = 0x8456
+       FOG_COORDINATE_ARRAY_EXT                        = 0x8457 # 1 I
+
+###############################################################################
+
+# Extension #150 - skipped
+# Extension #151 - skipped
+# Extension #152 - skipped
+# Extension #153 - skipped
+# Extension #154 - skipped
+
+###############################################################################
+
+# Extension #155
+REND_screen_coordinates enum:
+       SCREEN_COORDINATES_REND                         = 0x8490
+       INVERTED_SCREEN_W_REND                          = 0x8491
+
+###############################################################################
+
+# Extension #156
+EXT_coordinate_frame enum:
+       TANGENT_ARRAY_EXT                               = 0x8439
+       BINORMAL_ARRAY_EXT                              = 0x843A
+       CURRENT_TANGENT_EXT                             = 0x843B
+       CURRENT_BINORMAL_EXT                            = 0x843C
+       TANGENT_ARRAY_TYPE_EXT                          = 0x843E
+       TANGENT_ARRAY_STRIDE_EXT                        = 0x843F
+       BINORMAL_ARRAY_TYPE_EXT                         = 0x8440
+       BINORMAL_ARRAY_STRIDE_EXT                       = 0x8441
+       TANGENT_ARRAY_POINTER_EXT                       = 0x8442
+       BINORMAL_ARRAY_POINTER_EXT                      = 0x8443
+       MAP1_TANGENT_EXT                                = 0x8444
+       MAP2_TANGENT_EXT                                = 0x8445
+       MAP1_BINORMAL_EXT                               = 0x8446
+       MAP2_BINORMAL_EXT                               = 0x8447
+
+###############################################################################
+
+# Extension #157 - skipped
+
+###############################################################################
+
+# Extension #158
+EXT_texture_env_combine enum:
+       COMBINE_EXT                                     = 0x8570
+       COMBINE_RGB_EXT                                 = 0x8571
+       COMBINE_ALPHA_EXT                               = 0x8572
+       RGB_SCALE_EXT                                   = 0x8573
+       ADD_SIGNED_EXT                                  = 0x8574
+       INTERPOLATE_EXT                                 = 0x8575
+       CONSTANT_EXT                                    = 0x8576
+       PRIMARY_COLOR_EXT                               = 0x8577
+       PREVIOUS_EXT                                    = 0x8578
+       SOURCE0_RGB_EXT                                 = 0x8580
+       SOURCE1_RGB_EXT                                 = 0x8581
+       SOURCE2_RGB_EXT                                 = 0x8582
+       SOURCE0_ALPHA_EXT                               = 0x8588
+       SOURCE1_ALPHA_EXT                               = 0x8589
+       SOURCE2_ALPHA_EXT                               = 0x858A
+       OPERAND0_RGB_EXT                                = 0x8590
+       OPERAND1_RGB_EXT                                = 0x8591
+       OPERAND2_RGB_EXT                                = 0x8592
+       OPERAND0_ALPHA_EXT                              = 0x8598
+       OPERAND1_ALPHA_EXT                              = 0x8599
+       OPERAND2_ALPHA_EXT                              = 0x859A
+
+###############################################################################
+
+# Extension #159
+APPLE_specular_vector enum:
+       LIGHT_MODEL_SPECULAR_VECTOR_APPLE               = 0x85B0
+
+###############################################################################
+
+# Extension #160
+APPLE_transform_hint enum:
+       TRANSFORM_HINT_APPLE                            = 0x85B1
+
+###############################################################################
+
+# Extension #161
+SGIX_fog_scale enum:
+       FOG_SCALE_SGIX                                  = 0x81FC
+       FOG_SCALE_VALUE_SGIX                            = 0x81FD
+
+###############################################################################
+
+# Extension #162 - skipped
+
+###############################################################################
+
+# Extension #163
+SUNX_constant_data enum:
+       UNPACK_CONSTANT_DATA_SUNX                       = 0x81D5
+       TEXTURE_CONSTANT_DATA_SUNX                      = 0x81D6
+
+###############################################################################
+
+# Extension #164
+SUN_global_alpha enum:
+       GLOBAL_ALPHA_SUN                                = 0x81D9
+       GLOBAL_ALPHA_FACTOR_SUN                         = 0x81DA
+
+###############################################################################
+
+# Extension #165
+SUN_triangle_list enum:
+       RESTART_SUN                                     = 0x0001
+       REPLACE_MIDDLE_SUN                              = 0x0002
+       REPLACE_OLDEST_SUN                              = 0x0003
+       TRIANGLE_LIST_SUN                               = 0x81D7
+       REPLACEMENT_CODE_SUN                            = 0x81D8
+       REPLACEMENT_CODE_ARRAY_SUN                      = 0x85C0
+       REPLACEMENT_CODE_ARRAY_TYPE_SUN                 = 0x85C1
+       REPLACEMENT_CODE_ARRAY_STRIDE_SUN               = 0x85C2
+       REPLACEMENT_CODE_ARRAY_POINTER_SUN              = 0x85C3
+       R1UI_V3F_SUN                                    = 0x85C4
+       R1UI_C4UB_V3F_SUN                               = 0x85C5
+       R1UI_C3F_V3F_SUN                                = 0x85C6
+       R1UI_N3F_V3F_SUN                                = 0x85C7
+       R1UI_C4F_N3F_V3F_SUN                            = 0x85C8
+       R1UI_T2F_V3F_SUN                                = 0x85C9
+       R1UI_T2F_N3F_V3F_SUN                            = 0x85CA
+       R1UI_T2F_C4F_N3F_V3F_SUN                        = 0x85CB
+
+###############################################################################
+
+# No new tokens
+# Extension #166
+SUN_vertex enum:
+
+###############################################################################
+
+# Extension #167 - WGL_EXT_display_color_table
+# Extension #168 - WGL_EXT_extensions_string
+# Extension #169 - WGL_EXT_make_current_read
+# Extension #170 - WGL_EXT_pixel_format
+# Extension #171 - WGL_EXT_pbuffer
+# Extension #172 - WGL_EXT_swap_control
+
+###############################################################################
+
+# Extension #173
+EXT_blend_func_separate enum:
+       BLEND_DST_RGB_EXT                               = 0x80C8
+       BLEND_SRC_RGB_EXT                               = 0x80C9
+       BLEND_DST_ALPHA_EXT                             = 0x80CA
+       BLEND_SRC_ALPHA_EXT                             = 0x80CB
+
+###############################################################################
+
+# Extension #174
+INGR_color_clamp enum:
+       RED_MIN_CLAMP_INGR                              = 0x8560
+       GREEN_MIN_CLAMP_INGR                            = 0x8561
+       BLUE_MIN_CLAMP_INGR                             = 0x8562
+       ALPHA_MIN_CLAMP_INGR                            = 0x8563
+       RED_MAX_CLAMP_INGR                              = 0x8564
+       GREEN_MAX_CLAMP_INGR                            = 0x8565
+       BLUE_MAX_CLAMP_INGR                             = 0x8566
+       ALPHA_MAX_CLAMP_INGR                            = 0x8567
+
+###############################################################################
+
+# Extension #175
+INGR_interlace_read enum:
+       INTERLACE_READ_INGR                             = 0x8568
+
+###############################################################################
+
+# Extension #176
+EXT_stencil_wrap enum:
+       INCR_WRAP_EXT                                   = 0x8507
+       DECR_WRAP_EXT                                   = 0x8508
+
+###############################################################################
+
+# Extension #177 - skipped
+
+###############################################################################
+
+# Extension #178
+EXT_422_pixels enum:
+       422_EXT                                         = 0x80CC
+       422_REV_EXT                                     = 0x80CD
+       422_AVERAGE_EXT                                 = 0x80CE
+       422_REV_AVERAGE_EXT                             = 0x80CF
+
+###############################################################################
+
+# Extension #179
+NV_texgen_reflection enum:
+       NORMAL_MAP_NV                                   = 0x8511
+       REFLECTION_MAP_NV                               = 0x8512
+
+###############################################################################
+
+# Extension #180 - skipped
+# Extension #181 - skipped
+
+###############################################################################
+
+# Is this shipping? No extension number assigned.
+# Extension #?
+EXT_texture_cube_map enum:
+       NORMAL_MAP_EXT                                  = 0x8511
+       REFLECTION_MAP_EXT                              = 0x8512
+       TEXTURE_CUBE_MAP_EXT                            = 0x8513
+       TEXTURE_BINDING_CUBE_MAP_EXT                    = 0x8514
+       TEXTURE_CUBE_MAP_POSITIVE_X_EXT                 = 0x8515
+       TEXTURE_CUBE_MAP_NEGATIVE_X_EXT                 = 0x8516
+       TEXTURE_CUBE_MAP_POSITIVE_Y_EXT                 = 0x8517
+       TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT                 = 0x8518
+       TEXTURE_CUBE_MAP_POSITIVE_Z_EXT                 = 0x8519
+       TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT                 = 0x851A
+       PROXY_TEXTURE_CUBE_MAP_EXT                      = 0x851B
+       MAX_CUBE_MAP_TEXTURE_SIZE_EXT                   = 0x851C
+
+###############################################################################
+
+# Extension #182
+SUN_convolution_border_modes enum:
+       WRAP_BORDER_SUN                                 = 0x81D4
+
+###############################################################################
+
+# Extension #183 - GLX_SUN_transparent_index
+
+###############################################################################
+
+# Extension #184 - skipped
+
+###############################################################################
+
+# No new tokens
+# Extension #185
+EXT_texture_env_add enum:
+
+###############################################################################
+
+# Extension #186
+EXT_texture_lod_bias enum:
+       MAX_TEXTURE_LOD_BIAS_EXT                        = 0x84FD
+       TEXTURE_FILTER_CONTROL_EXT                      = 0x8500
+       TEXTURE_LOD_BIAS_EXT                            = 0x8501
+
+###############################################################################
+
+# Extension #187
+EXT_texture_filter_anisotropic enum:
+       TEXTURE_MAX_ANISOTROPY_EXT                      = 0x84FE
+       MAX_TEXTURE_MAX_ANISOTROPY_EXT                  = 0x84FF
+
+###############################################################################
+
+# Extension #188
+EXT_vertex_weighting enum:
+       MODELVIEW0_STACK_DEPTH_EXT                      = GL_MODELVIEW_STACK_DEPTH
+       MODELVIEW1_STACK_DEPTH_EXT                      = 0x8502
+       MODELVIEW0_MATRIX_EXT                           = GL_MODELVIEW_MATRIX
+       MODELVIEW1_MATRIX_EXT                           = 0x8506
+       VERTEX_WEIGHTING_EXT                            = 0x8509
+       MODELVIEW0_EXT                                  = GL_MODELVIEW
+       MODELVIEW1_EXT                                  = 0x850A
+       CURRENT_VERTEX_WEIGHT_EXT                       = 0x850B
+       VERTEX_WEIGHT_ARRAY_EXT                         = 0x850C
+       VERTEX_WEIGHT_ARRAY_SIZE_EXT                    = 0x850D
+       VERTEX_WEIGHT_ARRAY_TYPE_EXT                    = 0x850E
+       VERTEX_WEIGHT_ARRAY_STRIDE_EXT                  = 0x850F
+       VERTEX_WEIGHT_ARRAY_POINTER_EXT                 = 0x8510
+
+###############################################################################
+
+# Extension #189
+NV_light_max_exponent enum:
+       MAX_SHININESS_NV                                = 0x8504
+       MAX_SPOT_EXPONENT_NV                            = 0x8505
+
+###############################################################################
+
+# Extension #190
+NV_vertex_array_range enum:
+       VERTEX_ARRAY_RANGE_NV                           = 0x851D
+       VERTEX_ARRAY_RANGE_LENGTH_NV                    = 0x851E
+       VERTEX_ARRAY_RANGE_VALID_NV                     = 0x851F
+       MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV               = 0x8520
+       VERTEX_ARRAY_RANGE_POINTER_NV                   = 0x8521
+
+###############################################################################
+
+# Extension #191
+NV_register_combiners enum:
+       REGISTER_COMBINERS_NV                           = 0x8522
+       VARIABLE_A_NV                                   = 0x8523
+       VARIABLE_B_NV                                   = 0x8524
+       VARIABLE_C_NV                                   = 0x8525
+       VARIABLE_D_NV                                   = 0x8526
+       VARIABLE_E_NV                                   = 0x8527
+       VARIABLE_F_NV                                   = 0x8528
+       VARIABLE_G_NV                                   = 0x8529
+       CONSTANT_COLOR0_NV                              = 0x852A
+       CONSTANT_COLOR1_NV                              = 0x852B
+       PRIMARY_COLOR_NV                                = 0x852C
+       SECONDARY_COLOR_NV                              = 0x852D
+       SPARE0_NV                                       = 0x852E
+       SPARE1_NV                                       = 0x852F
+       DISCARD_NV                                      = 0x8530
+       E_TIMES_F_NV                                    = 0x8531
+       SPARE0_PLUS_SECONDARY_COLOR_NV                  = 0x8532
+       UNSIGNED_IDENTITY_NV                            = 0x8536
+       UNSIGNED_INVERT_NV                              = 0x8537
+       EXPAND_NORMAL_NV                                = 0x8538
+       EXPAND_NEGATE_NV                                = 0x8539
+       HALF_BIAS_NORMAL_NV                             = 0x853A
+       HALF_BIAS_NEGATE_NV                             = 0x853B
+       SIGNED_IDENTITY_NV                              = 0x853C
+       SIGNED_NEGATE_NV                                = 0x853D
+       SCALE_BY_TWO_NV                                 = 0x853E
+       SCALE_BY_FOUR_NV                                = 0x853F
+       SCALE_BY_ONE_HALF_NV                            = 0x8540
+       BIAS_BY_NEGATIVE_ONE_HALF_NV                    = 0x8541
+       COMBINER_INPUT_NV                               = 0x8542
+       COMBINER_MAPPING_NV                             = 0x8543
+       COMBINER_COMPONENT_USAGE_NV                     = 0x8544
+       COMBINER_AB_DOT_PRODUCT_NV                      = 0x8545
+       COMBINER_CD_DOT_PRODUCT_NV                      = 0x8546
+       COMBINER_MUX_SUM_NV                             = 0x8547
+       COMBINER_SCALE_NV                               = 0x8548
+       COMBINER_BIAS_NV                                = 0x8549
+       COMBINER_AB_OUTPUT_NV                           = 0x854A
+       COMBINER_CD_OUTPUT_NV                           = 0x854B
+       COMBINER_SUM_OUTPUT_NV                          = 0x854C
+       MAX_GENERAL_COMBINERS_NV                        = 0x854D
+       NUM_GENERAL_COMBINERS_NV                        = 0x854E
+       COLOR_SUM_CLAMP_NV                              = 0x854F
+       COMBINER0_NV                                    = 0x8550
+       COMBINER1_NV                                    = 0x8551
+       COMBINER2_NV                                    = 0x8552
+       COMBINER3_NV                                    = 0x8553
+       COMBINER4_NV                                    = 0x8554
+       COMBINER5_NV                                    = 0x8555
+       COMBINER6_NV                                    = 0x8556
+       COMBINER7_NV                                    = 0x8557
+       use ARB_multitexture                TEXTURE0_ARB
+       use ARB_multitexture                TEXTURE1_ARB
+       use BlendingFactorDest              ZERO
+       use DrawBufferMode                  NONE
+       use GetPName                        FOG
+
+###############################################################################
+
+# Extension #192
+NV_fog_distance enum:
+       FOG_DISTANCE_MODE_NV                            = 0x855A
+       EYE_RADIAL_NV                                   = 0x855B
+       EYE_PLANE_ABSOLUTE_NV                           = 0x855C
+       use TextureGenParameter             EYE_PLANE
+
+###############################################################################
+
+# Extension #193
+NV_texgen_emboss enum:
+       EMBOSS_LIGHT_NV                                 = 0x855D
+       EMBOSS_CONSTANT_NV                              = 0x855E
+       EMBOSS_MAP_NV                                   = 0x855F
+
+###############################################################################
+
+# No new tokens
+# Extension #194
+NV_blend_square enum:
+
+###############################################################################
+
+# Extension #195
+NV_texture_env_combine4 enum:
+       COMBINE4_NV                                     = 0x8503
+       SOURCE3_RGB_NV                                  = 0x8583
+       SOURCE3_ALPHA_NV                                = 0x858B
+       OPERAND3_RGB_NV                                 = 0x8593
+       OPERAND3_ALPHA_NV                               = 0x859B
+
+###############################################################################
+
+# No new tokens
+# Extension #196
+MESA_resize_buffers enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #197
+MESA_window_pos enum:
+
+###############################################################################
+
+# Extension #198
+EXT_texture_compression_s3tc enum:
+       COMPRESSED_RGB_S3TC_DXT1_EXT                    = 0x83F0
+       COMPRESSED_RGBA_S3TC_DXT1_EXT                   = 0x83F1
+       COMPRESSED_RGBA_S3TC_DXT3_EXT                   = 0x83F2
+       COMPRESSED_RGBA_S3TC_DXT5_EXT                   = 0x83F3
+
+###############################################################################
+
+# Extension #199
+IBM_cull_vertex enum:
+       CULL_VERTEX_IBM                                 = 103050
+
+###############################################################################
+
+# No new tokens
+# Extension #200
+IBM_multimode_draw_arrays enum:
+
+###############################################################################
+
+# Extension #201
+IBM_vertex_array_lists enum:
+       VERTEX_ARRAY_LIST_IBM                           = 103070
+       NORMAL_ARRAY_LIST_IBM                           = 103071
+       COLOR_ARRAY_LIST_IBM                            = 103072
+       INDEX_ARRAY_LIST_IBM                            = 103073
+       TEXTURE_COORD_ARRAY_LIST_IBM                    = 103074
+       EDGE_FLAG_ARRAY_LIST_IBM                        = 103075
+       FOG_COORDINATE_ARRAY_LIST_IBM                   = 103076
+       SECONDARY_COLOR_ARRAY_LIST_IBM                  = 103077
+       VERTEX_ARRAY_LIST_STRIDE_IBM                    = 103080
+       NORMAL_ARRAY_LIST_STRIDE_IBM                    = 103081
+       COLOR_ARRAY_LIST_STRIDE_IBM                     = 103082
+       INDEX_ARRAY_LIST_STRIDE_IBM                     = 103083
+       TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM             = 103084
+       EDGE_FLAG_ARRAY_LIST_STRIDE_IBM                 = 103085
+       FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM            = 103086
+       SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM           = 103087
+
+###############################################################################
+
+# Extension #202
+SGIX_subsample enum:
+       PACK_SUBSAMPLE_RATE_SGIX                        = 0x85A0
+       UNPACK_SUBSAMPLE_RATE_SGIX                      = 0x85A1
+       PIXEL_SUBSAMPLE_4444_SGIX                       = 0x85A2
+       PIXEL_SUBSAMPLE_2424_SGIX                       = 0x85A3
+       PIXEL_SUBSAMPLE_4242_SGIX                       = 0x85A4
+
+###############################################################################
+
+# Extension #203
+SGIX_ycrcb_subsample enum:
+       PACK_SUBSAMPLE_RATE_SGIX                        = 0x85A0
+       UNPACK_SUBSAMPLE_RATE_SGIX                      = 0x85A1
+       PIXEL_SUBSAMPLE_4444_SGIX                       = 0x85A2
+       PIXEL_SUBSAMPLE_2424_SGIX                       = 0x85A3
+       PIXEL_SUBSAMPLE_4242_SGIX                       = 0x85A4
+
+###############################################################################
+
+# Extension #204
+SGIX_ycrcba enum:
+       YCRCB_SGIX                                      = 0x8318
+       YCRCBA_SGIX                                     = 0x8319
+
+###############################################################################
+
+# Extension #205
+SGI_depth_pass_instrument enum:
+       DEPTH_PASS_INSTRUMENT_SGIX                      = 0x8310
+       DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX             = 0x8311
+       DEPTH_PASS_INSTRUMENT_MAX_SGIX                  = 0x8312
+
+###############################################################################
+
+# Extension #206
+3DFX_texture_compression_FXT1 enum:
+       COMPRESSED_RGB_FXT1_3DFX                        = 0x86B0
+       COMPRESSED_RGBA_FXT1_3DFX                       = 0x86B1
+
+###############################################################################
+
+# Extension #207
+3DFX_multisample enum:
+       MULTISAMPLE_3DFX                                = 0x86B2
+       SAMPLE_BUFFERS_3DFX                             = 0x86B3
+       SAMPLES_3DFX                                    = 0x86B4
+       MULTISAMPLE_BIT_3DFX                            = 0x20000000
+
+###############################################################################
+
+# No new tokens
+# Extension #208
+3DFX_tbuffer enum:
+
+###############################################################################
+
+# Extension #209
+EXT_multisample enum:
+       MULTISAMPLE_EXT                                 = 0x809D
+       SAMPLE_ALPHA_TO_MASK_EXT                        = 0x809E
+       SAMPLE_ALPHA_TO_ONE_EXT                         = 0x809F
+       SAMPLE_MASK_EXT                                 = 0x80A0
+       1PASS_EXT                                       = 0x80A1
+       2PASS_0_EXT                                     = 0x80A2
+       2PASS_1_EXT                                     = 0x80A3
+       4PASS_0_EXT                                     = 0x80A4
+       4PASS_1_EXT                                     = 0x80A5
+       4PASS_2_EXT                                     = 0x80A6
+       4PASS_3_EXT                                     = 0x80A7
+       SAMPLE_BUFFERS_EXT                              = 0x80A8 # 1 I
+       SAMPLES_EXT                                     = 0x80A9 # 1 I
+       SAMPLE_MASK_VALUE_EXT                           = 0x80AA # 1 F
+       SAMPLE_MASK_INVERT_EXT                          = 0x80AB # 1 I
+       SAMPLE_PATTERN_EXT                              = 0x80AC # 1 I
+       MULTISAMPLE_BIT_EXT                             = 0x20000000
+
+###############################################################################
+
+# Extension #210
+SGIX_vertex_preclip enum:
+       VERTEX_PRECLIP_SGIX                             = 0x83EE
+       VERTEX_PRECLIP_HINT_SGIX                        = 0x83EF
+
+###############################################################################
+
+# Extension #211
+SGIX_convolution_accuracy enum:
+       CONVOLUTION_HINT_SGIX                           = 0x8316 # 1 I
+
+###############################################################################
+
+# Extension #212
+SGIX_resample enum:
+       PACK_RESAMPLE_SGIX                              = 0x842C
+       UNPACK_RESAMPLE_SGIX                            = 0x842D
+       RESAMPLE_REPLICATE_SGIX                         = 0x842E
+       RESAMPLE_ZERO_FILL_SGIX                         = 0x842F
+       RESAMPLE_DECIMATE_SGIX                          = 0x8430
+
+###############################################################################
+
+# Extension #213
+SGIS_point_line_texgen enum:
+       EYE_DISTANCE_TO_POINT_SGIS                      = 0x81F0
+       OBJECT_DISTANCE_TO_POINT_SGIS                   = 0x81F1
+       EYE_DISTANCE_TO_LINE_SGIS                       = 0x81F2
+       OBJECT_DISTANCE_TO_LINE_SGIS                    = 0x81F3
+       EYE_POINT_SGIS                                  = 0x81F4
+       OBJECT_POINT_SGIS                               = 0x81F5
+       EYE_LINE_SGIS                                   = 0x81F6
+       OBJECT_LINE_SGIS                                = 0x81F7
+
+###############################################################################
+
+# Extension #214
+SGIS_texture_color_mask enum:
+       TEXTURE_COLOR_WRITEMASK_SGIS                    = 0x81EF
+
+###############################################################################
+
+# Extension #220
+# Promoted to ARB_texture_env_dot3, enum values changed
+EXT_texture_env_dot3 enum:
+       DOT3_RGB_EXT                                    = 0x8740
+       DOT3_RGBA_EXT                                   = 0x8741
+
+###############################################################################
+
+# Extension #221
+ATI_texture_mirror_once enum:
+       MIRROR_CLAMP_ATI                                = 0x8742
+       MIRROR_CLAMP_TO_EDGE_ATI                        = 0x8743
+
+###############################################################################
+
+# Extension #222
+NV_fence enum:
+       ALL_COMPLETED_NV                                = 0x84F2
+       FENCE_STATUS_NV                                 = 0x84F3
+       FENCE_CONDITION_NV                              = 0x84F4
+
+###############################################################################
+
+# Extension #224
+IBM_texture_mirrored_repeat enum:
+       MIRRORED_REPEAT_IBM                             = 0x8370
+
+###############################################################################
+
+# Extension #225
+NV_evaluators enum:
+       EVAL_2D_NV                                      = 0x86C0
+       EVAL_TRIANGULAR_2D_NV                           = 0x86C1
+       MAP_TESSELLATION_NV                             = 0x86C2
+       MAP_ATTRIB_U_ORDER_NV                           = 0x86C3
+       MAP_ATTRIB_V_ORDER_NV                           = 0x86C4
+       EVAL_FRACTIONAL_TESSELLATION_NV                 = 0x86C5
+       EVAL_VERTEX_ATTRIB0_NV                          = 0x86C6
+       EVAL_VERTEX_ATTRIB1_NV                          = 0x86C7
+       EVAL_VERTEX_ATTRIB2_NV                          = 0x86C8
+       EVAL_VERTEX_ATTRIB3_NV                          = 0x86C9
+       EVAL_VERTEX_ATTRIB4_NV                          = 0x86CA
+       EVAL_VERTEX_ATTRIB5_NV                          = 0x86CB
+       EVAL_VERTEX_ATTRIB6_NV                          = 0x86CC
+       EVAL_VERTEX_ATTRIB7_NV                          = 0x86CD
+       EVAL_VERTEX_ATTRIB8_NV                          = 0x86CE
+       EVAL_VERTEX_ATTRIB9_NV                          = 0x86CF
+       EVAL_VERTEX_ATTRIB10_NV                         = 0x86D0
+       EVAL_VERTEX_ATTRIB11_NV                         = 0x86D1
+       EVAL_VERTEX_ATTRIB12_NV                         = 0x86D2
+       EVAL_VERTEX_ATTRIB13_NV                         = 0x86D3
+       EVAL_VERTEX_ATTRIB14_NV                         = 0x86D4
+       EVAL_VERTEX_ATTRIB15_NV                         = 0x86D5
+       MAX_MAP_TESSELLATION_NV                         = 0x86D6
+       MAX_RATIONAL_EVAL_ORDER_NV                      = 0x86D7
+
+###############################################################################
+
+# Extension #226
+NV_packed_depth_stencil enum:
+       DEPTH_STENCIL_NV                                = 0x84F9
+       UNSIGNED_INT_24_8_NV                            = 0x84FA
+
+###############################################################################
+
+# Extension #227
+NV_register_combiners2 enum:
+       PER_STAGE_CONSTANTS_NV                          = 0x8535
+
+###############################################################################
+
+# No new tokens
+# Extension #228
+NV_texture_compression_vtc enum:
+
+###############################################################################
+
+# Extension #229
+NV_texture_rectangle enum:
+       TEXTURE_RECTANGLE_NV                            = 0x84F5
+       TEXTURE_BINDING_RECTANGLE_NV                    = 0x84F6
+       PROXY_TEXTURE_RECTANGLE_NV                      = 0x84F7
+       MAX_RECTANGLE_TEXTURE_SIZE_NV                   = 0x84F8
+
+###############################################################################
+
+# Extension #230
+NV_texture_shader enum:
+       OFFSET_TEXTURE_RECTANGLE_NV                     = 0x864C
+       OFFSET_TEXTURE_RECTANGLE_SCALE_NV               = 0x864D
+       DOT_PRODUCT_TEXTURE_RECTANGLE_NV                = 0x864E
+       RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV            = 0x86D9
+       UNSIGNED_INT_S8_S8_8_8_NV                       = 0x86DA
+       UNSIGNED_INT_8_8_S8_S8_REV_NV                   = 0x86DB
+       DSDT_MAG_INTENSITY_NV                           = 0x86DC
+       SHADER_CONSISTENT_NV                            = 0x86DD
+       TEXTURE_SHADER_NV                               = 0x86DE
+       SHADER_OPERATION_NV                             = 0x86DF
+       CULL_MODES_NV                                   = 0x86E0
+       OFFSET_TEXTURE_MATRIX_NV                        = 0x86E1
+       OFFSET_TEXTURE_SCALE_NV                         = 0x86E2
+       OFFSET_TEXTURE_BIAS_NV                          = 0x86E3
+       OFFSET_TEXTURE_2D_MATRIX_NV                     = GL_OFFSET_TEXTURE_MATRIX_NV
+       OFFSET_TEXTURE_2D_SCALE_NV                      = GL_OFFSET_TEXTURE_SCALE_NV
+       OFFSET_TEXTURE_2D_BIAS_NV                       = GL_OFFSET_TEXTURE_BIAS_NV
+       PREVIOUS_TEXTURE_INPUT_NV                       = 0x86E4
+       CONST_EYE_NV                                    = 0x86E5
+       PASS_THROUGH_NV                                 = 0x86E6
+       CULL_FRAGMENT_NV                                = 0x86E7
+       OFFSET_TEXTURE_2D_NV                            = 0x86E8
+       DEPENDENT_AR_TEXTURE_2D_NV                      = 0x86E9
+       DEPENDENT_GB_TEXTURE_2D_NV                      = 0x86EA
+       DOT_PRODUCT_NV                                  = 0x86EC
+       DOT_PRODUCT_DEPTH_REPLACE_NV                    = 0x86ED
+       DOT_PRODUCT_TEXTURE_2D_NV                       = 0x86EE
+       DOT_PRODUCT_TEXTURE_CUBE_MAP_NV                 = 0x86F0
+       DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV                 = 0x86F1
+       DOT_PRODUCT_REFLECT_CUBE_MAP_NV                 = 0x86F2
+       DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV       = 0x86F3
+       HILO_NV                                         = 0x86F4
+       DSDT_NV                                         = 0x86F5
+       DSDT_MAG_NV                                     = 0x86F6
+       DSDT_MAG_VIB_NV                                 = 0x86F7
+       HILO16_NV                                       = 0x86F8
+       SIGNED_HILO_NV                                  = 0x86F9
+       SIGNED_HILO16_NV                                = 0x86FA
+       SIGNED_RGBA_NV                                  = 0x86FB
+       SIGNED_RGBA8_NV                                 = 0x86FC
+       SIGNED_RGB_NV                                   = 0x86FE
+       SIGNED_RGB8_NV                                  = 0x86FF
+       SIGNED_LUMINANCE_NV                             = 0x8701
+       SIGNED_LUMINANCE8_NV                            = 0x8702
+       SIGNED_LUMINANCE_ALPHA_NV                       = 0x8703
+       SIGNED_LUMINANCE8_ALPHA8_NV                     = 0x8704
+       SIGNED_ALPHA_NV                                 = 0x8705
+       SIGNED_ALPHA8_NV                                = 0x8706
+       SIGNED_INTENSITY_NV                             = 0x8707
+       SIGNED_INTENSITY8_NV                            = 0x8708
+       DSDT8_NV                                        = 0x8709
+       DSDT8_MAG8_NV                                   = 0x870A
+       DSDT8_MAG8_INTENSITY8_NV                        = 0x870B
+       SIGNED_RGB_UNSIGNED_ALPHA_NV                    = 0x870C
+       SIGNED_RGB8_UNSIGNED_ALPHA8_NV                  = 0x870D
+       HI_SCALE_NV                                     = 0x870E
+       LO_SCALE_NV                                     = 0x870F
+       DS_SCALE_NV                                     = 0x8710
+       DT_SCALE_NV                                     = 0x8711
+       MAGNITUDE_SCALE_NV                              = 0x8712
+       VIBRANCE_SCALE_NV                               = 0x8713
+       HI_BIAS_NV                                      = 0x8714
+       LO_BIAS_NV                                      = 0x8715
+       DS_BIAS_NV                                      = 0x8716
+       DT_BIAS_NV                                      = 0x8717
+       MAGNITUDE_BIAS_NV                               = 0x8718
+       VIBRANCE_BIAS_NV                                = 0x8719
+       TEXTURE_BORDER_VALUES_NV                        = 0x871A
+       TEXTURE_HI_SIZE_NV                              = 0x871B
+       TEXTURE_LO_SIZE_NV                              = 0x871C
+       TEXTURE_DS_SIZE_NV                              = 0x871D
+       TEXTURE_DT_SIZE_NV                              = 0x871E
+       TEXTURE_MAG_SIZE_NV                             = 0x871F
+
+###############################################################################
+
+# Extension #231
+NV_texture_shader2 enum:
+       DOT_PRODUCT_TEXTURE_3D_NV                       = 0x86EF
+
+###############################################################################
+
+# Extension #232
+NV_vertex_array_range2 enum:
+       VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV             = 0x8533
+
+###############################################################################
+
+# Extension #233
+NV_vertex_program enum:
+       VERTEX_PROGRAM_NV                               = 0x8620
+       VERTEX_STATE_PROGRAM_NV                         = 0x8621
+       ATTRIB_ARRAY_SIZE_NV                            = 0x8623
+       ATTRIB_ARRAY_STRIDE_NV                          = 0x8624
+       ATTRIB_ARRAY_TYPE_NV                            = 0x8625
+       CURRENT_ATTRIB_NV                               = 0x8626
+       PROGRAM_LENGTH_NV                               = 0x8627
+       PROGRAM_STRING_NV                               = 0x8628
+       MODELVIEW_PROJECTION_NV                         = 0x8629
+       IDENTITY_NV                                     = 0x862A
+       INVERSE_NV                                      = 0x862B
+       TRANSPOSE_NV                                    = 0x862C
+       INVERSE_TRANSPOSE_NV                            = 0x862D
+       MAX_TRACK_MATRIX_STACK_DEPTH_NV                 = 0x862E
+       MAX_TRACK_MATRICES_NV                           = 0x862F
+       MATRIX0_NV                                      = 0x8630
+       MATRIX1_NV                                      = 0x8631
+       MATRIX2_NV                                      = 0x8632
+       MATRIX3_NV                                      = 0x8633
+       MATRIX4_NV                                      = 0x8634
+       MATRIX5_NV                                      = 0x8635
+       MATRIX6_NV                                      = 0x8636
+       MATRIX7_NV                                      = 0x8637
+##################
+#
+#      Reserved:
+#
+#      MATRIX8_NV                                      = 0x8638
+#      MATRIX9_NV                                      = 0x8639
+#      MATRIX10_NV                                     = 0x863A
+#      MATRIX11_NV                                     = 0x863B
+#      MATRIX12_NV                                     = 0x863C
+#      MATRIX13_NV                                     = 0x863D
+#      MATRIX14_NV                                     = 0x863E
+#      MATRIX15_NV                                     = 0x863F
+#
+###################
+       CURRENT_MATRIX_STACK_DEPTH_NV                   = 0x8640
+       CURRENT_MATRIX_NV                               = 0x8641
+       VERTEX_PROGRAM_POINT_SIZE_NV                    = 0x8642
+       VERTEX_PROGRAM_TWO_SIDE_NV                      = 0x8643
+       PROGRAM_PARAMETER_NV                            = 0x8644
+       ATTRIB_ARRAY_POINTER_NV                         = 0x8645
+       PROGRAM_TARGET_NV                               = 0x8646
+       PROGRAM_RESIDENT_NV                             = 0x8647
+       TRACK_MATRIX_NV                                 = 0x8648
+       TRACK_MATRIX_TRANSFORM_NV                       = 0x8649
+       VERTEX_PROGRAM_BINDING_NV                       = 0x864A
+       PROGRAM_ERROR_POSITION_NV                       = 0x864B
+       VERTEX_ATTRIB_ARRAY0_NV                         = 0x8650
+       VERTEX_ATTRIB_ARRAY1_NV                         = 0x8651
+       VERTEX_ATTRIB_ARRAY2_NV                         = 0x8652
+       VERTEX_ATTRIB_ARRAY3_NV                         = 0x8653
+       VERTEX_ATTRIB_ARRAY4_NV                         = 0x8654
+       VERTEX_ATTRIB_ARRAY5_NV                         = 0x8655
+       VERTEX_ATTRIB_ARRAY6_NV                         = 0x8656
+       VERTEX_ATTRIB_ARRAY7_NV                         = 0x8657
+       VERTEX_ATTRIB_ARRAY8_NV                         = 0x8658
+       VERTEX_ATTRIB_ARRAY9_NV                         = 0x8659
+       VERTEX_ATTRIB_ARRAY10_NV                        = 0x865A
+       VERTEX_ATTRIB_ARRAY11_NV                        = 0x865B
+       VERTEX_ATTRIB_ARRAY12_NV                        = 0x865C
+       VERTEX_ATTRIB_ARRAY13_NV                        = 0x865D
+       VERTEX_ATTRIB_ARRAY14_NV                        = 0x865E
+       VERTEX_ATTRIB_ARRAY15_NV                        = 0x865F
+       MAP1_VERTEX_ATTRIB0_4_NV                        = 0x8660
+       MAP1_VERTEX_ATTRIB1_4_NV                        = 0x8661
+       MAP1_VERTEX_ATTRIB2_4_NV                        = 0x8662
+       MAP1_VERTEX_ATTRIB3_4_NV                        = 0x8663
+       MAP1_VERTEX_ATTRIB4_4_NV                        = 0x8664
+       MAP1_VERTEX_ATTRIB5_4_NV                        = 0x8665
+       MAP1_VERTEX_ATTRIB6_4_NV                        = 0x8666
+       MAP1_VERTEX_ATTRIB7_4_NV                        = 0x8667
+       MAP1_VERTEX_ATTRIB8_4_NV                        = 0x8668
+       MAP1_VERTEX_ATTRIB9_4_NV                        = 0x8669
+       MAP1_VERTEX_ATTRIB10_4_NV                       = 0x866A
+       MAP1_VERTEX_ATTRIB11_4_NV                       = 0x866B
+       MAP1_VERTEX_ATTRIB12_4_NV                       = 0x866C
+       MAP1_VERTEX_ATTRIB13_4_NV                       = 0x866D
+       MAP1_VERTEX_ATTRIB14_4_NV                       = 0x866E
+       MAP1_VERTEX_ATTRIB15_4_NV                       = 0x866F
+       MAP2_VERTEX_ATTRIB0_4_NV                        = 0x8670
+       MAP2_VERTEX_ATTRIB1_4_NV                        = 0x8671
+       MAP2_VERTEX_ATTRIB2_4_NV                        = 0x8672
+       MAP2_VERTEX_ATTRIB3_4_NV                        = 0x8673
+       MAP2_VERTEX_ATTRIB4_4_NV                        = 0x8674
+       MAP2_VERTEX_ATTRIB5_4_NV                        = 0x8675
+       MAP2_VERTEX_ATTRIB6_4_NV                        = 0x8676
+       MAP2_VERTEX_ATTRIB7_4_NV                        = 0x8677
+       MAP2_VERTEX_ATTRIB8_4_NV                        = 0x8678
+       MAP2_VERTEX_ATTRIB9_4_NV                        = 0x8679
+       MAP2_VERTEX_ATTRIB10_4_NV                       = 0x867A
+       MAP2_VERTEX_ATTRIB11_4_NV                       = 0x867B
+       MAP2_VERTEX_ATTRIB12_4_NV                       = 0x867C
+       MAP2_VERTEX_ATTRIB13_4_NV                       = 0x867D
+       MAP2_VERTEX_ATTRIB14_4_NV                       = 0x867E
+       MAP2_VERTEX_ATTRIB15_4_NV                       = 0x867F
+
+###############################################################################
+
+# Extension #235
+SGIX_texture_coordinate_clamp enum:
+       TEXTURE_MAX_CLAMP_S_SGIX                        = 0x8369
+       TEXTURE_MAX_CLAMP_T_SGIX                        = 0x836A
+       TEXTURE_MAX_CLAMP_R_SGIX                        = 0x836B
+
+###############################################################################
+
+# Extension #236
+SGIX_scalebias_hint enum:
+       SCALEBIAS_HINT_SGIX                             = 0x8322
+
+###############################################################################
+
+# Extension #237 - GLX_OML_swap_method
+# Extension #238 - GLX_OML_sync_control
+
+###############################################################################
+
+# Extension #239
+OML_interlace enum:
+       INTERLACE_OML                                   = 0x8980
+       INTERLACE_READ_OML                              = 0x8981
+
+###############################################################################
+
+# Extension #240
+OML_subsample enum:
+       FORMAT_SUBSAMPLE_24_24_OML                      = 0x8982
+       FORMAT_SUBSAMPLE_244_244_OML                    = 0x8983
+
+###############################################################################
+
+# Extension #241
+OML_resample enum:
+       PACK_RESAMPLE_OML                               = 0x8984
+       UNPACK_RESAMPLE_OML                             = 0x8985
+       RESAMPLE_REPLICATE_OML                          = 0x8986
+       RESAMPLE_ZERO_FILL_OML                          = 0x8987
+       RESAMPLE_AVERAGE_OML                            = 0x8988
+       RESAMPLE_DECIMATE_OML                           = 0x8989
+
+###############################################################################
+
+# Extension #242 - WGL_OML_sync_control
+
+###############################################################################
+
+# Extension #243
+NV_copy_depth_to_color enum:
+       DEPTH_STENCIL_TO_RGBA_NV                        = 0x886E
+       DEPTH_STENCIL_TO_BGRA_NV                        = 0x886F
+
+###############################################################################
+
+# Extension #244
+ATI_envmap_bumpmap enum:
+       BUMP_ROT_MATRIX_ATI                             = 0x8775
+       BUMP_ROT_MATRIX_SIZE_ATI                        = 0x8776
+       BUMP_NUM_TEX_UNITS_ATI                          = 0x8777
+       BUMP_TEX_UNITS_ATI                              = 0x8778
+       DUDV_ATI                                        = 0x8779
+       DU8DV8_ATI                                      = 0x877A
+       BUMP_ENVMAP_ATI                                 = 0x877B
+       BUMP_TARGET_ATI                                 = 0x877C
+
+###############################################################################
+
+# Extension #245
+ATI_fragment_shader enum:
+       FRAGMENT_SHADER_ATI                             = 0x8920
+       REG_0_ATI                                       = 0x8921
+       REG_1_ATI                                       = 0x8922
+       REG_2_ATI                                       = 0x8923
+       REG_3_ATI                                       = 0x8924
+       REG_4_ATI                                       = 0x8925
+       REG_5_ATI                                       = 0x8926
+       REG_6_ATI                                       = 0x8927
+       REG_7_ATI                                       = 0x8928
+       REG_8_ATI                                       = 0x8929
+       REG_9_ATI                                       = 0x892A
+       REG_10_ATI                                      = 0x892B
+       REG_11_ATI                                      = 0x892C
+       REG_12_ATI                                      = 0x892D
+       REG_13_ATI                                      = 0x892E
+       REG_14_ATI                                      = 0x892F
+       REG_15_ATI                                      = 0x8930
+       REG_16_ATI                                      = 0x8931
+       REG_17_ATI                                      = 0x8932
+       REG_18_ATI                                      = 0x8933
+       REG_19_ATI                                      = 0x8934
+       REG_20_ATI                                      = 0x8935
+       REG_21_ATI                                      = 0x8936
+       REG_22_ATI                                      = 0x8937
+       REG_23_ATI                                      = 0x8938
+       REG_24_ATI                                      = 0x8939
+       REG_25_ATI                                      = 0x893A
+       REG_26_ATI                                      = 0x893B
+       REG_27_ATI                                      = 0x893C
+       REG_28_ATI                                      = 0x893D
+       REG_29_ATI                                      = 0x893E
+       REG_30_ATI                                      = 0x893F
+       REG_31_ATI                                      = 0x8940
+       CON_0_ATI                                       = 0x8941
+       CON_1_ATI                                       = 0x8942
+       CON_2_ATI                                       = 0x8943
+       CON_3_ATI                                       = 0x8944
+       CON_4_ATI                                       = 0x8945
+       CON_5_ATI                                       = 0x8946
+       CON_6_ATI                                       = 0x8947
+       CON_7_ATI                                       = 0x8948
+       CON_8_ATI                                       = 0x8949
+       CON_9_ATI                                       = 0x894A
+       CON_10_ATI                                      = 0x894B
+       CON_11_ATI                                      = 0x894C
+       CON_12_ATI                                      = 0x894D
+       CON_13_ATI                                      = 0x894E
+       CON_14_ATI                                      = 0x894F
+       CON_15_ATI                                      = 0x8950
+       CON_16_ATI                                      = 0x8951
+       CON_17_ATI                                      = 0x8952
+       CON_18_ATI                                      = 0x8953
+       CON_19_ATI                                      = 0x8954
+       CON_20_ATI                                      = 0x8955
+       CON_21_ATI                                      = 0x8956
+       CON_22_ATI                                      = 0x8957
+       CON_23_ATI                                      = 0x8958
+       CON_24_ATI                                      = 0x8959
+       CON_25_ATI                                      = 0x895A
+       CON_26_ATI                                      = 0x895B
+       CON_27_ATI                                      = 0x895C
+       CON_28_ATI                                      = 0x895D
+       CON_29_ATI                                      = 0x895E
+       CON_30_ATI                                      = 0x895F
+       CON_31_ATI                                      = 0x8960
+       MOV_ATI                                         = 0x8961
+       ADD_ATI                                         = 0x8963
+       MUL_ATI                                         = 0x8964
+       SUB_ATI                                         = 0x8965
+       DOT3_ATI                                        = 0x8966
+       DOT4_ATI                                        = 0x8967
+       MAD_ATI                                         = 0x8968
+       LERP_ATI                                        = 0x8969
+       CND_ATI                                         = 0x896A
+       CND0_ATI                                        = 0x896B
+       DOT2_ADD_ATI                                    = 0x896C
+       SECONDARY_INTERPOLATOR_ATI                      = 0x896D
+       NUM_FRAGMENT_REGISTERS_ATI                      = 0x896E
+       NUM_FRAGMENT_CONSTANTS_ATI                      = 0x896F
+       NUM_PASSES_ATI                                  = 0x8970
+       NUM_INSTRUCTIONS_PER_PASS_ATI                   = 0x8971
+       NUM_INSTRUCTIONS_TOTAL_ATI                      = 0x8972
+       NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI           = 0x8973
+       NUM_LOOPBACK_COMPONENTS_ATI                     = 0x8974
+       COLOR_ALPHA_PAIRING_ATI                         = 0x8975
+       SWIZZLE_STR_ATI                                 = 0x8976
+       SWIZZLE_STQ_ATI                                 = 0x8977
+       SWIZZLE_STR_DR_ATI                              = 0x8978
+       SWIZZLE_STQ_DQ_ATI                              = 0x8979
+       SWIZZLE_STRQ_ATI                                = 0x897A
+       SWIZZLE_STRQ_DQ_ATI                             = 0x897B
+       RED_BIT_ATI                                     = 0x00000001
+       GREEN_BIT_ATI                                   = 0x00000002
+       BLUE_BIT_ATI                                    = 0x00000004
+       2X_BIT_ATI                                      = 0x00000001
+       4X_BIT_ATI                                      = 0x00000002
+       8X_BIT_ATI                                      = 0x00000004
+       HALF_BIT_ATI                                    = 0x00000008
+       QUARTER_BIT_ATI                                 = 0x00000010
+       EIGHTH_BIT_ATI                                  = 0x00000020
+       SATURATE_BIT_ATI                                = 0x00000040
+       2X_BIT_ATI                                      = 0x00000001
+       COMP_BIT_ATI                                    = 0x00000002
+       NEGATE_BIT_ATI                                  = 0x00000004
+       BIAS_BIT_ATI                                    = 0x00000008
+
+###############################################################################
+
+# Extension #246
+ATI_pn_triangles enum:
+       PN_TRIANGLES_ATI                                = 0x87F0
+       MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI          = 0x87F1
+       PN_TRIANGLES_POINT_MODE_ATI                     = 0x87F2
+       PN_TRIANGLES_NORMAL_MODE_ATI                    = 0x87F3
+       PN_TRIANGLES_TESSELATION_LEVEL_ATI              = 0x87F4
+       PN_TRIANGLES_POINT_MODE_LINEAR_ATI              = 0x87F5
+       PN_TRIANGLES_POINT_MODE_CUBIC_ATI               = 0x87F6
+       PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI             = 0x87F7
+       PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI          = 0x87F8
+
+###############################################################################
+
+# Extension #247
+ATI_vertex_array_object enum:
+       STATIC_ATI                                      = 0x8760
+       DYNAMIC_ATI                                     = 0x8761
+       PRESERVE_ATI                                    = 0x8762
+       DISCARD_ATI                                     = 0x8763
+       OBJECT_BUFFER_SIZE_ATI                          = 0x8764
+       OBJECT_BUFFER_USAGE_ATI                         = 0x8765
+       ARRAY_OBJECT_BUFFER_ATI                         = 0x8766
+       ARRAY_OBJECT_OFFSET_ATI                         = 0x8767
+
+###############################################################################
+
+# Extension #248
+EXT_vertex_shader enum:
+       VERTEX_SHADER_EXT                               = 0x8780
+       VERTEX_SHADER_BINDING_EXT                       = 0x8781
+       OP_INDEX_EXT                                    = 0x8782
+       OP_NEGATE_EXT                                   = 0x8783
+       OP_DOT3_EXT                                     = 0x8784
+       OP_DOT4_EXT                                     = 0x8785
+       OP_MUL_EXT                                      = 0x8786
+       OP_ADD_EXT                                      = 0x8787
+       OP_MADD_EXT                                     = 0x8788
+       OP_FRAC_EXT                                     = 0x8789
+       OP_MAX_EXT                                      = 0x878A
+       OP_MIN_EXT                                      = 0x878B
+       OP_SET_GE_EXT                                   = 0x878C
+       OP_SET_LT_EXT                                   = 0x878D
+       OP_CLAMP_EXT                                    = 0x878E
+       OP_FLOOR_EXT                                    = 0x878F
+       OP_ROUND_EXT                                    = 0x8790
+       OP_EXP_BASE_2_EXT                               = 0x8791
+       OP_LOG_BASE_2_EXT                               = 0x8792
+       OP_POWER_EXT                                    = 0x8793
+       OP_RECIP_EXT                                    = 0x8794
+       OP_RECIP_SQRT_EXT                               = 0x8795
+       OP_SUB_EXT                                      = 0x8796
+       OP_CROSS_PRODUCT_EXT                            = 0x8797
+       OP_MULTIPLY_MATRIX_EXT                          = 0x8798
+       OP_MOV_EXT                                      = 0x8799
+       OUTPUT_VERTEX_EXT                               = 0x879A
+       OUTPUT_COLOR0_EXT                               = 0x879B
+       OUTPUT_COLOR1_EXT                               = 0x879C
+       OUTPUT_TEXTURE_COORD0_EXT                       = 0x879D
+       OUTPUT_TEXTURE_COORD1_EXT                       = 0x879E
+       OUTPUT_TEXTURE_COORD2_EXT                       = 0x879F
+       OUTPUT_TEXTURE_COORD3_EXT                       = 0x87A0
+       OUTPUT_TEXTURE_COORD4_EXT                       = 0x87A1
+       OUTPUT_TEXTURE_COORD5_EXT                       = 0x87A2
+       OUTPUT_TEXTURE_COORD6_EXT                       = 0x87A3
+       OUTPUT_TEXTURE_COORD7_EXT                       = 0x87A4
+       OUTPUT_TEXTURE_COORD8_EXT                       = 0x87A5
+       OUTPUT_TEXTURE_COORD9_EXT                       = 0x87A6
+       OUTPUT_TEXTURE_COORD10_EXT                      = 0x87A7
+       OUTPUT_TEXTURE_COORD11_EXT                      = 0x87A8
+       OUTPUT_TEXTURE_COORD12_EXT                      = 0x87A9
+       OUTPUT_TEXTURE_COORD13_EXT                      = 0x87AA
+       OUTPUT_TEXTURE_COORD14_EXT                      = 0x87AB
+       OUTPUT_TEXTURE_COORD15_EXT                      = 0x87AC
+       OUTPUT_TEXTURE_COORD16_EXT                      = 0x87AD
+       OUTPUT_TEXTURE_COORD17_EXT                      = 0x87AE
+       OUTPUT_TEXTURE_COORD18_EXT                      = 0x87AF
+       OUTPUT_TEXTURE_COORD19_EXT                      = 0x87B0
+       OUTPUT_TEXTURE_COORD20_EXT                      = 0x87B1
+       OUTPUT_TEXTURE_COORD21_EXT                      = 0x87B2
+       OUTPUT_TEXTURE_COORD22_EXT                      = 0x87B3
+       OUTPUT_TEXTURE_COORD23_EXT                      = 0x87B4
+       OUTPUT_TEXTURE_COORD24_EXT                      = 0x87B5
+       OUTPUT_TEXTURE_COORD25_EXT                      = 0x87B6
+       OUTPUT_TEXTURE_COORD26_EXT                      = 0x87B7
+       OUTPUT_TEXTURE_COORD27_EXT                      = 0x87B8
+       OUTPUT_TEXTURE_COORD28_EXT                      = 0x87B9
+       OUTPUT_TEXTURE_COORD29_EXT                      = 0x87BA
+       OUTPUT_TEXTURE_COORD30_EXT                      = 0x87BB
+       OUTPUT_TEXTURE_COORD31_EXT                      = 0x87BC
+       OUTPUT_FOG_EXT                                  = 0x87BD
+       SCALAR_EXT                                      = 0x87BE
+       VECTOR_EXT                                      = 0x87BF
+       MATRIX_EXT                                      = 0x87C0
+       VARIANT_EXT                                     = 0x87C1
+       INVARIANT_EXT                                   = 0x87C2
+       LOCAL_CONSTANT_EXT                              = 0x87C3
+       LOCAL_EXT                                       = 0x87C4
+       MAX_VERTEX_SHADER_INSTRUCTIONS_EXT              = 0x87C5
+       MAX_VERTEX_SHADER_VARIANTS_EXT                  = 0x87C6
+       MAX_VERTEX_SHADER_INVARIANTS_EXT                = 0x87C7
+       MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT           = 0x87C8
+       MAX_VERTEX_SHADER_LOCALS_EXT                    = 0x87C9
+       MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT    = 0x87CA
+       MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT        = 0x87CB
+       MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87CC
+       MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT      = 0x87CD
+       MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT          = 0x87CE
+       VERTEX_SHADER_INSTRUCTIONS_EXT                  = 0x87CF
+       VERTEX_SHADER_VARIANTS_EXT                      = 0x87D0
+       VERTEX_SHADER_INVARIANTS_EXT                    = 0x87D1
+       VERTEX_SHADER_LOCAL_CONSTANTS_EXT               = 0x87D2
+       VERTEX_SHADER_LOCALS_EXT                        = 0x87D3
+       VERTEX_SHADER_OPTIMIZED_EXT                     = 0x87D4
+       X_EXT                                           = 0x87D5
+       Y_EXT                                           = 0x87D6
+       Z_EXT                                           = 0x87D7
+       W_EXT                                           = 0x87D8
+       NEGATIVE_X_EXT                                  = 0x87D9
+       NEGATIVE_Y_EXT                                  = 0x87DA
+       NEGATIVE_Z_EXT                                  = 0x87DB
+       NEGATIVE_W_EXT                                  = 0x87DC
+       ZERO_EXT                                        = 0x87DD
+       ONE_EXT                                         = 0x87DE
+       NEGATIVE_ONE_EXT                                = 0x87DF
+       NORMALIZED_RANGE_EXT                            = 0x87E0
+       FULL_RANGE_EXT                                  = 0x87E1
+       CURRENT_VERTEX_EXT                              = 0x87E2
+       MVP_MATRIX_EXT                                  = 0x87E3
+       VARIANT_VALUE_EXT                               = 0x87E4
+       VARIANT_DATATYPE_EXT                            = 0x87E5
+       VARIANT_ARRAY_STRIDE_EXT                        = 0x87E6
+       VARIANT_ARRAY_TYPE_EXT                          = 0x87E7
+       VARIANT_ARRAY_EXT                               = 0x87E8
+       VARIANT_ARRAY_POINTER_EXT                       = 0x87E9
+       INVARIANT_VALUE_EXT                             = 0x87EA
+       INVARIANT_DATATYPE_EXT                          = 0x87EB
+       LOCAL_CONSTANT_VALUE_EXT                        = 0x87EC
+       LOCAL_CONSTANT_DATATYPE_EXT                     = 0x87ED
+
+###############################################################################
+
+# Extension #249
+ATI_vertex_streams enum:
+       MAX_VERTEX_STREAMS_ATI                          = 0x876B
+       VERTEX_STREAM0_ATI                              = 0x876C
+       VERTEX_STREAM1_ATI                              = 0x876D
+       VERTEX_STREAM2_ATI                              = 0x876E
+       VERTEX_STREAM3_ATI                              = 0x876F
+       VERTEX_STREAM4_ATI                              = 0x8770
+       VERTEX_STREAM5_ATI                              = 0x8771
+       VERTEX_STREAM6_ATI                              = 0x8772
+       VERTEX_STREAM7_ATI                              = 0x8773
+       VERTEX_SOURCE_ATI                               = 0x8774
+
+###############################################################################
+
+# Extension #250 - WGL_I3D_digital_video_control
+# Extension #251 - WGL_I3D_gamma
+# Extension #252 - WGL_I3D_genlock
+# Extension #253 - WGL_I3D_image_buffer
+# Extension #254 - WGL_I3D_swap_frame_lock
+# Extension #255 - WGL_I3D_swap_frame_usage
+
+###############################################################################
+
+# Extension #256
+ATI_element_array enum:
+       ELEMENT_ARRAY_ATI                               = 0x8768
+       ELEMENT_ARRAY_TYPE_ATI                          = 0x8769
+       ELEMENT_ARRAY_POINTER_ATI                       = 0x876A
+
+###############################################################################
+
+# Extension #257
+SUN_mesh_array enum:
+       QUAD_MESH_SUN                                   = 0x8614
+       TRIANGLE_MESH_SUN                               = 0x8615
+
+###############################################################################
+
+# Extension #258
+SUN_slice_accum enum:
+       SLICE_ACCUM_SUN                                 = 0x85CC
+
+###############################################################################
+
+# Extension #259
+NV_multisample_filter_hint enum:
+       MULTISAMPLE_FILTER_HINT_NV                      = 0x8534
+
+###############################################################################
+
+# Extension #260
+NV_depth_clamp enum:
+       DEPTH_CLAMP_NV                                  = 0x864F
+
+###############################################################################
+
+# Extension #261
+NV_occlusion_query enum:
+       PIXEL_COUNTER_BITS_NV                           = 0x8864
+       CURRENT_OCCLUSION_QUERY_ID_NV                   = 0x8865
+       PIXEL_COUNT_NV                                  = 0x8866
+       PIXEL_COUNT_AVAILABLE_NV                        = 0x8867
+
+###############################################################################
+
+# Extension #262
+NV_point_sprite enum:
+       POINT_SPRITE_NV                                 = 0x8861
+       COORD_REPLACE_NV                                = 0x8862
+       POINT_SPRITE_R_MODE_NV                          = 0x8863
+
+###############################################################################
+
+# Extension #263 - WGL_NV_render_depth_texture
+# Extension #264 - WGL_NV_render_texture_rectangle
+
+###############################################################################
+
+# Extension #265
+NV_texture_shader3 enum:
+       OFFSET_PROJECTIVE_TEXTURE_2D_NV                 = 0x8850
+       OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV           = 0x8851
+       OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV          = 0x8852
+       OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV    = 0x8853
+       OFFSET_HILO_TEXTURE_2D_NV                       = 0x8854
+       OFFSET_HILO_TEXTURE_RECTANGLE_NV                = 0x8855
+       OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV            = 0x8856
+       OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV     = 0x8857
+       DEPENDENT_HILO_TEXTURE_2D_NV                    = 0x8858
+       DEPENDENT_RGB_TEXTURE_3D_NV                     = 0x8859
+       DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV               = 0x885A
+       DOT_PRODUCT_PASS_THROUGH_NV                     = 0x885B
+       DOT_PRODUCT_TEXTURE_1D_NV                       = 0x885C
+       DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV             = 0x885D
+       HILO8_NV                                        = 0x885E
+       SIGNED_HILO8_NV                                 = 0x885F
+       FORCE_BLUE_TO_ONE_NV                            = 0x8860
+
+###############################################################################
+
+# No new tokens
+# Extension #266
+NV_vertex_program1_1 enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #267
+EXT_shadow_funcs enum:
+
+###############################################################################
+
+# Extension #268
+EXT_stencil_two_side enum:
+       STENCIL_TEST_TWO_SIDE_EXT                       = 0x8910
+       ACTIVE_STENCIL_FACE_EXT                         = 0x8911
+
+###############################################################################
+
+# Extension #269
+ATI_text_fragment_shader enum:
+       TEXT_FRAGMENT_SHADER_ATI                        = 0x8200
+
+###############################################################################
+
+# Extension #270
+APPLE_client_storage enum:
+       UNPACK_CLIENT_STORAGE_APPLE                     = 0x85B2
+
+###############################################################################
+
+# Extension #271
+# (extends ATI_element_array???)
+APPLE_element_array enum:
+       ELEMENT_ARRAY_APPLE                             = 0x8768
+       ELEMENT_ARRAY_TYPE_APPLE                        = 0x8769
+       ELEMENT_ARRAY_POINTER_APPLE                     = 0x876A
+
+###############################################################################
+
+# Extension #272
+# ??? BUFFER_OBJECT_APPLE appears to be part of the shipping extension,
+# but is not in the spec in the registry. Also appears in
+# APPLE_object_purgeable below.
+APPLE_fence enum:
+       DRAW_PIXELS_APPLE                               = 0x8A0A
+       FENCE_APPLE                                     = 0x8A0B
+
+###############################################################################
+
+# Extension #273
+APPLE_vertex_array_object enum:
+       VERTEX_ARRAY_BINDING_APPLE                      = 0x85B5
+
+###############################################################################
+
+# Extension #274
+# (How does this interact with NV_vertex_array_range???)
+APPLE_vertex_array_range enum:
+       VERTEX_ARRAY_RANGE_APPLE                        = 0x851D
+       VERTEX_ARRAY_RANGE_LENGTH_APPLE                 = 0x851E
+       VERTEX_ARRAY_STORAGE_HINT_APPLE                 = 0x851F
+       VERTEX_ARRAY_RANGE_POINTER_APPLE                = 0x8521
+       STORAGE_CACHED_APPLE                            = 0x85BE
+       STORAGE_SHARED_APPLE                            = 0x85BF
+
+###############################################################################
+
+# Extension #275
+APPLE_ycbcr_422 enum:
+       YCBCR_422_APPLE                                 = 0x85B9
+       UNSIGNED_SHORT_8_8_APPLE                        = 0x85BA
+       UNSIGNED_SHORT_8_8_REV_APPLE                    = 0x85BB
+
+###############################################################################
+
+# Extension #276
+S3_s3tc enum:
+       RGB_S3TC                                        = 0x83A0
+       RGB4_S3TC                                       = 0x83A1
+       RGBA_S3TC                                       = 0x83A2
+       RGBA4_S3TC                                      = 0x83A3
+
+###############################################################################
+
+# Extension #277
+ATI_draw_buffers enum:
+       MAX_DRAW_BUFFERS_ATI                            = 0x8824
+       DRAW_BUFFER0_ATI                                = 0x8825
+       DRAW_BUFFER1_ATI                                = 0x8826
+       DRAW_BUFFER2_ATI                                = 0x8827
+       DRAW_BUFFER3_ATI                                = 0x8828
+       DRAW_BUFFER4_ATI                                = 0x8829
+       DRAW_BUFFER5_ATI                                = 0x882A
+       DRAW_BUFFER6_ATI                                = 0x882B
+       DRAW_BUFFER7_ATI                                = 0x882C
+       DRAW_BUFFER8_ATI                                = 0x882D
+       DRAW_BUFFER9_ATI                                = 0x882E
+       DRAW_BUFFER10_ATI                               = 0x882F
+       DRAW_BUFFER11_ATI                               = 0x8830
+       DRAW_BUFFER12_ATI                               = 0x8831
+       DRAW_BUFFER13_ATI                               = 0x8832
+       DRAW_BUFFER14_ATI                               = 0x8833
+       DRAW_BUFFER15_ATI                               = 0x8834
+
+###############################################################################
+
+# Extension #278
+# This is really a WGL extension, but if defined there are
+# some associated GL enumerants.
+ATI_pixel_format_float enum:
+       TYPE_RGBA_FLOAT_ATI                             = 0x8820
+       COLOR_CLEAR_UNCLAMPED_VALUE_ATI                 = 0x8835
+
+###############################################################################
+
+# Extension #279
+ATI_texture_env_combine3 enum:
+       MODULATE_ADD_ATI                                = 0x8744
+       MODULATE_SIGNED_ADD_ATI                         = 0x8745
+       MODULATE_SUBTRACT_ATI                           = 0x8746
+
+###############################################################################
+
+# Extension #280
+ATI_texture_float enum:
+       RGBA_FLOAT32_ATI                                = 0x8814
+       RGB_FLOAT32_ATI                                 = 0x8815
+       ALPHA_FLOAT32_ATI                               = 0x8816
+       INTENSITY_FLOAT32_ATI                           = 0x8817
+       LUMINANCE_FLOAT32_ATI                           = 0x8818
+       LUMINANCE_ALPHA_FLOAT32_ATI                     = 0x8819
+       RGBA_FLOAT16_ATI                                = 0x881A
+       RGB_FLOAT16_ATI                                 = 0x881B
+       ALPHA_FLOAT16_ATI                               = 0x881C
+       INTENSITY_FLOAT16_ATI                           = 0x881D
+       LUMINANCE_FLOAT16_ATI                           = 0x881E
+       LUMINANCE_ALPHA_FLOAT16_ATI                     = 0x881F
+
+###############################################################################
+
+# Extension #281 (also WGL_NV_float_buffer)
+NV_float_buffer enum:
+       FLOAT_R_NV                                      = 0x8880
+       FLOAT_RG_NV                                     = 0x8881
+       FLOAT_RGB_NV                                    = 0x8882
+       FLOAT_RGBA_NV                                   = 0x8883
+       FLOAT_R16_NV                                    = 0x8884
+       FLOAT_R32_NV                                    = 0x8885
+       FLOAT_RG16_NV                                   = 0x8886
+       FLOAT_RG32_NV                                   = 0x8887
+       FLOAT_RGB16_NV                                  = 0x8888
+       FLOAT_RGB32_NV                                  = 0x8889
+       FLOAT_RGBA16_NV                                 = 0x888A
+       FLOAT_RGBA32_NV                                 = 0x888B
+       TEXTURE_FLOAT_COMPONENTS_NV                     = 0x888C
+       FLOAT_CLEAR_COLOR_VALUE_NV                      = 0x888D
+       FLOAT_RGBA_MODE_NV                              = 0x888E
+
+###############################################################################
+
+# Extension #282
+NV_fragment_program enum:
+       MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV        = 0x8868
+       FRAGMENT_PROGRAM_NV                             = 0x8870
+       MAX_TEXTURE_COORDS_NV                           = 0x8871
+       MAX_TEXTURE_IMAGE_UNITS_NV                      = 0x8872
+       FRAGMENT_PROGRAM_BINDING_NV                     = 0x8873
+       PROGRAM_ERROR_STRING_NV                         = 0x8874
+
+###############################################################################
+
+# Extension #283
+NV_half_float enum:
+       HALF_FLOAT_NV                                   = 0x140B
+
+###############################################################################
+
+# Extension #284
+NV_pixel_data_range enum:
+       WRITE_PIXEL_DATA_RANGE_NV                       = 0x8878
+       READ_PIXEL_DATA_RANGE_NV                        = 0x8879
+       WRITE_PIXEL_DATA_RANGE_LENGTH_NV                = 0x887A
+       READ_PIXEL_DATA_RANGE_LENGTH_NV                 = 0x887B
+       WRITE_PIXEL_DATA_RANGE_POINTER_NV               = 0x887C
+       READ_PIXEL_DATA_RANGE_POINTER_NV                = 0x887D
+
+###############################################################################
+
+# Extension #285
+NV_primitive_restart enum:
+       PRIMITIVE_RESTART_NV                            = 0x8558
+       PRIMITIVE_RESTART_INDEX_NV                      = 0x8559
+
+###############################################################################
+
+# Extension #286
+NV_texture_expand_normal enum:
+       TEXTURE_UNSIGNED_REMAP_MODE_NV                  = 0x888F
+
+###############################################################################
+
+# No new tokens
+# Extension #287
+NV_vertex_program2 enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #288
+ATI_map_object_buffer enum:
+
+###############################################################################
+
+# Extension #289
+ATI_separate_stencil enum:
+       STENCIL_BACK_FUNC_ATI                           = 0x8800
+       STENCIL_BACK_FAIL_ATI                           = 0x8801
+       STENCIL_BACK_PASS_DEPTH_FAIL_ATI                = 0x8802
+       STENCIL_BACK_PASS_DEPTH_PASS_ATI                = 0x8803
+
+###############################################################################
+
+# No new tokens
+# Extension #290
+ATI_vertex_attrib_array_object enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #291 - OpenGL ES only, not in glext.h
+# OES_byte_coordinates enum:
+
+###############################################################################
+
+# Extension #292 - OpenGL ES only, not in glext.h
+# OES_fixed_point enum:
+#      FIXED_OES                                       = 0x140C
+
+###############################################################################
+
+# No new tokens
+# Extension #293 - OpenGL ES only, not in glext.h
+# OES_single_precision enum:
+
+###############################################################################
+
+# Extension #294 - OpenGL ES only, not in glext.h
+# OES_compressed_paletted_texture enum:
+#      PALETTE4_RGB8_OES                               = 0x8B90
+#      PALETTE4_RGBA8_OES                              = 0x8B91
+#      PALETTE4_R5_G6_B5_OES                           = 0x8B92
+#      PALETTE4_RGBA4_OES                              = 0x8B93
+#      PALETTE4_RGB5_A1_OES                            = 0x8B94
+#      PALETTE8_RGB8_OES                               = 0x8B95
+#      PALETTE8_RGBA8_OES                              = 0x8B96
+#      PALETTE8_R5_G6_B5_OES                           = 0x8B97
+#      PALETTE8_RGBA4_OES                              = 0x8B98
+#      PALETTE8_RGB5_A1_OES                            = 0x8B99
+
+###############################################################################
+
+# Extension #295 - This is an OpenGL ES extension, but also implemented in Mesa
+OES_read_format enum:
+       IMPLEMENTATION_COLOR_READ_TYPE_OES              = 0x8B9A
+       IMPLEMENTATION_COLOR_READ_FORMAT_OES            = 0x8B9B
+
+###############################################################################
+
+# No new tokens
+# Extension #296 - OpenGL ES only, not in glext.h
+# OES_query_matrix enum:
+
+###############################################################################
+
+# Extension #297
+EXT_depth_bounds_test enum:
+       DEPTH_BOUNDS_TEST_EXT                           = 0x8890
+       DEPTH_BOUNDS_EXT                                = 0x8891
+
+###############################################################################
+
+# Extension #298
+EXT_texture_mirror_clamp enum:
+       MIRROR_CLAMP_EXT                                = 0x8742
+       MIRROR_CLAMP_TO_EDGE_EXT                        = 0x8743
+       MIRROR_CLAMP_TO_BORDER_EXT                      = 0x8912
+
+###############################################################################
+
+# Extension #299
+EXT_blend_equation_separate enum:
+       BLEND_EQUATION_RGB_EXT                          = 0x8009    # alias GL_BLEND_EQUATION_EXT
+       BLEND_EQUATION_ALPHA_EXT                        = 0x883D
+
+###############################################################################
+
+# Extension #300
+MESA_pack_invert enum:
+       PACK_INVERT_MESA                                = 0x8758
+
+###############################################################################
+
+# Extension #301
+MESA_ycbcr_texture enum:
+       UNSIGNED_SHORT_8_8_MESA                         = 0x85BA
+       UNSIGNED_SHORT_8_8_REV_MESA                     = 0x85BB
+       YCBCR_MESA                                      = 0x8757
+
+###############################################################################
+
+# Extension #302
+EXT_pixel_buffer_object enum:
+       PIXEL_PACK_BUFFER_EXT                           = 0x88EB
+       PIXEL_UNPACK_BUFFER_EXT                         = 0x88EC
+       PIXEL_PACK_BUFFER_BINDING_EXT                   = 0x88ED
+       PIXEL_UNPACK_BUFFER_BINDING_EXT                 = 0x88EF
+
+###############################################################################
+
+# No new tokens
+# Extension #303
+NV_fragment_program_option enum:
+
+###############################################################################
+
+# Extension #304
+NV_fragment_program2 enum:
+       MAX_PROGRAM_EXEC_INSTRUCTIONS_NV                = 0x88F4
+       MAX_PROGRAM_CALL_DEPTH_NV                       = 0x88F5
+       MAX_PROGRAM_IF_DEPTH_NV                         = 0x88F6
+       MAX_PROGRAM_LOOP_DEPTH_NV                       = 0x88F7
+       MAX_PROGRAM_LOOP_COUNT_NV                       = 0x88F8
+
+###############################################################################
+
+# Extension #305
+NV_vertex_program2_option enum:
+       use NV_fragment_program2            MAX_PROGRAM_EXEC_INSTRUCTIONS_NV
+       use NV_fragment_program2            MAX_PROGRAM_CALL_DEPTH_NV
+
+###############################################################################
+
+# Extension #306
+NV_vertex_program3 enum:
+       use ARB_vertex_shader               MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
+
+###############################################################################
+
+# Extension #307 - GLX_SGIX_hyperpipe
+# Extension #308 - GLX_MESA_agp_offset
+
+# Extension #309 - GL_EXT_texture_compression_dxt1 (OpenGL ES only, subset of _s3tc version)
+#       use EXT_texture_compression_s3tc    COMPRESSED_RGB_S3TC_DXT1_EXT
+#       use EXT_texture_compression_s3tc    COMPRESSED_RGBA_S3TC_DXT1_EXT
+
+###############################################################################
+
+# Extension #310
+EXT_framebuffer_object enum:
+       INVALID_FRAMEBUFFER_OPERATION_EXT               = 0x0506
+       MAX_RENDERBUFFER_SIZE_EXT                       = 0x84E8
+       FRAMEBUFFER_BINDING_EXT                         = 0x8CA6
+       RENDERBUFFER_BINDING_EXT                        = 0x8CA7
+       FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT          = 0x8CD0
+       FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT          = 0x8CD1
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT        = 0x8CD2
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x8CD3
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT   = 0x8CD4
+       FRAMEBUFFER_COMPLETE_EXT                        = 0x8CD5
+       FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT           = 0x8CD6
+       FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT   = 0x8CD7
+## Removed 2005/09/26 in revision #117 of the extension:
+##       FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT = 0x8CD8
+       FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT           = 0x8CD9
+       FRAMEBUFFER_INCOMPLETE_FORMATS_EXT              = 0x8CDA
+       FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT          = 0x8CDB
+       FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT          = 0x8CDC
+       FRAMEBUFFER_UNSUPPORTED_EXT                     = 0x8CDD
+## Removed 2005/05/31 in revision #113 of the extension:
+##       FRAMEBUFFER_STATUS_ERROR_EXT                    = 0x8CDE
+       MAX_COLOR_ATTACHMENTS_EXT                       = 0x8CDF
+       COLOR_ATTACHMENT0_EXT                           = 0x8CE0
+       COLOR_ATTACHMENT1_EXT                           = 0x8CE1
+       COLOR_ATTACHMENT2_EXT                           = 0x8CE2
+       COLOR_ATTACHMENT3_EXT                           = 0x8CE3
+       COLOR_ATTACHMENT4_EXT                           = 0x8CE4
+       COLOR_ATTACHMENT5_EXT                           = 0x8CE5
+       COLOR_ATTACHMENT6_EXT                           = 0x8CE6
+       COLOR_ATTACHMENT7_EXT                           = 0x8CE7
+       COLOR_ATTACHMENT8_EXT                           = 0x8CE8
+       COLOR_ATTACHMENT9_EXT                           = 0x8CE9
+       COLOR_ATTACHMENT10_EXT                          = 0x8CEA
+       COLOR_ATTACHMENT11_EXT                          = 0x8CEB
+       COLOR_ATTACHMENT12_EXT                          = 0x8CEC
+       COLOR_ATTACHMENT13_EXT                          = 0x8CED
+       COLOR_ATTACHMENT14_EXT                          = 0x8CEE
+       COLOR_ATTACHMENT15_EXT                          = 0x8CEF
+       DEPTH_ATTACHMENT_EXT                            = 0x8D00
+       STENCIL_ATTACHMENT_EXT                          = 0x8D20
+       FRAMEBUFFER_EXT                                 = 0x8D40
+       RENDERBUFFER_EXT                                = 0x8D41
+       RENDERBUFFER_WIDTH_EXT                          = 0x8D42
+       RENDERBUFFER_HEIGHT_EXT                         = 0x8D43
+       RENDERBUFFER_INTERNAL_FORMAT_EXT                = 0x8D44
+# removed STENCIL_INDEX_EXT = 0x8D45 in rev. #114 of the spec
+       STENCIL_INDEX1_EXT                              = 0x8D46
+       STENCIL_INDEX4_EXT                              = 0x8D47
+       STENCIL_INDEX8_EXT                              = 0x8D48
+       STENCIL_INDEX16_EXT                             = 0x8D49
+       RENDERBUFFER_RED_SIZE_EXT                       = 0x8D50
+       RENDERBUFFER_GREEN_SIZE_EXT                     = 0x8D51
+       RENDERBUFFER_BLUE_SIZE_EXT                      = 0x8D52
+       RENDERBUFFER_ALPHA_SIZE_EXT                     = 0x8D53
+       RENDERBUFFER_DEPTH_SIZE_EXT                     = 0x8D54
+       RENDERBUFFER_STENCIL_SIZE_EXT                   = 0x8D55
+
+###############################################################################
+
+# No new tokens
+# Extension #311
+GREMEDY_string_marker enum:
+
+###############################################################################
+
+# Extension #312
+EXT_packed_depth_stencil enum:
+       DEPTH_STENCIL_EXT                               = 0x84F9
+       UNSIGNED_INT_24_8_EXT                           = 0x84FA
+       DEPTH24_STENCIL8_EXT                            = 0x88F0
+       TEXTURE_STENCIL_SIZE_EXT                        = 0x88F1
+
+###############################################################################
+
+# Extension #313 - WGL_3DL_stereo_control
+
+###############################################################################
+
+# Extension #314
+EXT_stencil_clear_tag enum:
+       STENCIL_TAG_BITS_EXT                            = 0x88F2
+       STENCIL_CLEAR_TAG_VALUE_EXT                     = 0x88F3
+
+###############################################################################
+
+# Extension #315
+EXT_texture_sRGB enum:
+       SRGB_EXT                                        = 0x8C40
+       SRGB8_EXT                                       = 0x8C41
+       SRGB_ALPHA_EXT                                  = 0x8C42
+       SRGB8_ALPHA8_EXT                                = 0x8C43
+       SLUMINANCE_ALPHA_EXT                            = 0x8C44
+       SLUMINANCE8_ALPHA8_EXT                          = 0x8C45
+       SLUMINANCE_EXT                                  = 0x8C46
+       SLUMINANCE8_EXT                                 = 0x8C47
+       COMPRESSED_SRGB_EXT                             = 0x8C48
+       COMPRESSED_SRGB_ALPHA_EXT                       = 0x8C49
+       COMPRESSED_SLUMINANCE_EXT                       = 0x8C4A
+       COMPRESSED_SLUMINANCE_ALPHA_EXT                 = 0x8C4B
+       COMPRESSED_SRGB_S3TC_DXT1_EXT                   = 0x8C4C
+       COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT             = 0x8C4D
+       COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT             = 0x8C4E
+       COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT             = 0x8C4F
+
+###############################################################################
+
+# Extension #316
+EXT_framebuffer_blit enum:
+       READ_FRAMEBUFFER_EXT                            = 0x8CA8
+       DRAW_FRAMEBUFFER_EXT                            = 0x8CA9
+       DRAW_FRAMEBUFFER_BINDING_EXT                    = GL_FRAMEBUFFER_BINDING_EXT
+       READ_FRAMEBUFFER_BINDING_EXT                    = 0x8CAA
+
+###############################################################################
+
+# Extension #317
+EXT_framebuffer_multisample enum:
+       RENDERBUFFER_SAMPLES_EXT                        = 0x8CAB
+       FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT          = 0x8D56
+       MAX_SAMPLES_EXT                                 = 0x8D57
+
+###############################################################################
+
+# Extension #318
+MESAX_texture_stack enum:
+       TEXTURE_1D_STACK_MESAX                          = 0x8759
+       TEXTURE_2D_STACK_MESAX                          = 0x875A
+       PROXY_TEXTURE_1D_STACK_MESAX                    = 0x875B
+       PROXY_TEXTURE_2D_STACK_MESAX                    = 0x875C
+       TEXTURE_1D_STACK_BINDING_MESAX                  = 0x875D
+       TEXTURE_2D_STACK_BINDING_MESAX                  = 0x875E
+
+###############################################################################
+
+# Extension #319
+EXT_timer_query enum:
+       TIME_ELAPSED_EXT                                = 0x88BF
+
+###############################################################################
+
+# No new tokens
+# Extension #320
+EXT_gpu_program_parameters enum:
+
+###############################################################################
+
+# Extension #321
+APPLE_flush_buffer_range enum:
+       BUFFER_SERIALIZED_MODIFY_APPLE                  = 0x8A12
+       BUFFER_FLUSHING_UNMAP_APPLE                     = 0x8A13
+
+###############################################################################
+
+# Extension #322
+NV_gpu_program4 enum:
+       MIN_PROGRAM_TEXEL_OFFSET_NV                     = 0x8904
+       MAX_PROGRAM_TEXEL_OFFSET_NV                     = 0x8905
+       PROGRAM_ATTRIB_COMPONENTS_NV                    = 0x8906
+       PROGRAM_RESULT_COMPONENTS_NV                    = 0x8907
+       MAX_PROGRAM_ATTRIB_COMPONENTS_NV                = 0x8908
+       MAX_PROGRAM_RESULT_COMPONENTS_NV                = 0x8909
+       MAX_PROGRAM_GENERIC_ATTRIBS_NV                  = 0x8DA5
+       MAX_PROGRAM_GENERIC_RESULTS_NV                  = 0x8DA6
+
+###############################################################################
+
+# Extension #323
+NV_geometry_program4 enum:
+       LINES_ADJACENCY_EXT                             = 0x000A
+       LINE_STRIP_ADJACENCY_EXT                        = 0x000B
+       TRIANGLES_ADJACENCY_EXT                         = 0x000C
+       TRIANGLE_STRIP_ADJACENCY_EXT                    = 0x000D
+       GEOMETRY_PROGRAM_NV                             = 0x8C26
+       MAX_PROGRAM_OUTPUT_VERTICES_NV                  = 0x8C27
+       MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV          = 0x8C28
+       GEOMETRY_VERTICES_OUT_EXT                       = 0x8DDA
+       GEOMETRY_INPUT_TYPE_EXT                         = 0x8DDB
+       GEOMETRY_OUTPUT_TYPE_EXT                        = 0x8DDC
+       MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT            = 0x8C29
+       FRAMEBUFFER_ATTACHMENT_LAYERED_EXT              = 0x8DA7
+       FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT        = 0x8DA8
+       FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT          = 0x8DA9
+       FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT        = 0x8CD4
+       PROGRAM_POINT_SIZE_EXT                          = 0x8642
+
+###############################################################################
+
+# Extension #324
+EXT_geometry_shader4 enum:
+       GEOMETRY_SHADER_EXT                             = 0x8DD9
+       use NV_geometry_program4            GEOMETRY_VERTICES_OUT_EXT
+       use NV_geometry_program4            GEOMETRY_INPUT_TYPE_EXT
+       use NV_geometry_program4            GEOMETRY_OUTPUT_TYPE_EXT
+       use NV_geometry_program4            MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT
+       MAX_GEOMETRY_VARYING_COMPONENTS_EXT             = 0x8DDD
+       MAX_VERTEX_VARYING_COMPONENTS_EXT               = 0x8DDE
+       MAX_VARYING_COMPONENTS_EXT                      = 0x8B4B
+       MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT             = 0x8DDF
+       MAX_GEOMETRY_OUTPUT_VERTICES_EXT                = 0x8DE0
+       MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT        = 0x8DE1
+       use NV_geometry_program4            LINES_ADJACENCY_EXT
+       use NV_geometry_program4            LINE_STRIP_ADJACENCY_EXT
+       use NV_geometry_program4            TRIANGLES_ADJACENCY_EXT
+       use NV_geometry_program4            TRIANGLE_STRIP_ADJACENCY_EXT
+       use NV_geometry_program4            FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT
+       use NV_geometry_program4            FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT
+       use NV_geometry_program4            FRAMEBUFFER_ATTACHMENT_LAYERED_EXT
+       use NV_geometry_program4            FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT
+       use NV_geometry_program4            PROGRAM_POINT_SIZE_EXT
+
+###############################################################################
+
+# Extension #325
+NV_vertex_program4 enum:
+       VERTEX_ATTRIB_ARRAY_INTEGER_NV                  = 0x88FD
+
+###############################################################################
+
+# Extension #326
+EXT_gpu_shader4 enum:
+       SAMPLER_1D_ARRAY_EXT                            = 0x8DC0
+       SAMPLER_2D_ARRAY_EXT                            = 0x8DC1
+       SAMPLER_BUFFER_EXT                              = 0x8DC2
+       SAMPLER_1D_ARRAY_SHADOW_EXT                     = 0x8DC3
+       SAMPLER_2D_ARRAY_SHADOW_EXT                     = 0x8DC4
+       SAMPLER_CUBE_SHADOW_EXT                         = 0x8DC5
+       UNSIGNED_INT_VEC2_EXT                           = 0x8DC6
+       UNSIGNED_INT_VEC3_EXT                           = 0x8DC7
+       UNSIGNED_INT_VEC4_EXT                           = 0x8DC8
+       INT_SAMPLER_1D_EXT                              = 0x8DC9
+       INT_SAMPLER_2D_EXT                              = 0x8DCA
+       INT_SAMPLER_3D_EXT                              = 0x8DCB
+       INT_SAMPLER_CUBE_EXT                            = 0x8DCC
+       INT_SAMPLER_2D_RECT_EXT                         = 0x8DCD
+       INT_SAMPLER_1D_ARRAY_EXT                        = 0x8DCE
+       INT_SAMPLER_2D_ARRAY_EXT                        = 0x8DCF
+       INT_SAMPLER_BUFFER_EXT                          = 0x8DD0
+       UNSIGNED_INT_SAMPLER_1D_EXT                     = 0x8DD1
+       UNSIGNED_INT_SAMPLER_2D_EXT                     = 0x8DD2
+       UNSIGNED_INT_SAMPLER_3D_EXT                     = 0x8DD3
+       UNSIGNED_INT_SAMPLER_CUBE_EXT                   = 0x8DD4
+       UNSIGNED_INT_SAMPLER_2D_RECT_EXT                = 0x8DD5
+       UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT               = 0x8DD6
+       UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT               = 0x8DD7
+       UNSIGNED_INT_SAMPLER_BUFFER_EXT                 = 0x8DD8
+
+###############################################################################
+
+# No new tokens
+# Extension #327
+EXT_draw_instanced enum:
+
+###############################################################################
+
+# Extension #328
+EXT_packed_float enum:
+       R11F_G11F_B10F_EXT                              = 0x8C3A
+       UNSIGNED_INT_10F_11F_11F_REV_EXT                = 0x8C3B
+       RGBA_SIGNED_COMPONENTS_EXT                      = 0x8C3C
+
+###############################################################################
+
+# Extension #329
+EXT_texture_array enum:
+       TEXTURE_1D_ARRAY_EXT                            = 0x8C18
+       PROXY_TEXTURE_1D_ARRAY_EXT                      = 0x8C19
+       TEXTURE_2D_ARRAY_EXT                            = 0x8C1A
+       PROXY_TEXTURE_2D_ARRAY_EXT                      = 0x8C1B
+       TEXTURE_BINDING_1D_ARRAY_EXT                    = 0x8C1C
+       TEXTURE_BINDING_2D_ARRAY_EXT                    = 0x8C1D
+       MAX_ARRAY_TEXTURE_LAYERS_EXT                    = 0x88FF
+       COMPARE_REF_DEPTH_TO_TEXTURE_EXT                = 0x884E
+       use NV_geometry_program4            FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT
+
+###############################################################################
+
+# Extension #330
+EXT_texture_buffer_object enum:
+       TEXTURE_BUFFER_EXT                              = 0x8C2A
+       MAX_TEXTURE_BUFFER_SIZE_EXT                     = 0x8C2B
+       TEXTURE_BINDING_BUFFER_EXT                      = 0x8C2C
+       TEXTURE_BUFFER_DATA_STORE_BINDING_EXT           = 0x8C2D
+       TEXTURE_BUFFER_FORMAT_EXT                       = 0x8C2E
+
+###############################################################################
+
+# Extension #331
+EXT_texture_compression_latc enum:
+       COMPRESSED_LUMINANCE_LATC1_EXT                  = 0x8C70
+       COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT           = 0x8C71
+       COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT            = 0x8C72
+       COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT     = 0x8C73
+
+###############################################################################
+
+# Extension #332
+EXT_texture_compression_rgtc enum:
+       COMPRESSED_RED_RGTC1_EXT                        = 0x8DBB
+       COMPRESSED_SIGNED_RED_RGTC1_EXT                 = 0x8DBC
+       COMPRESSED_RED_GREEN_RGTC2_EXT                  = 0x8DBD
+       COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT           = 0x8DBE
+
+###############################################################################
+
+# Extension #333
+EXT_texture_shared_exponent enum:
+       RGB9_E5_EXT                                     = 0x8C3D
+       UNSIGNED_INT_5_9_9_9_REV_EXT                    = 0x8C3E
+       TEXTURE_SHARED_SIZE_EXT                         = 0x8C3F
+
+###############################################################################
+
+# Extension #334
+NV_depth_buffer_float enum:
+       DEPTH_COMPONENT32F_NV                           = 0x8DAB
+       DEPTH32F_STENCIL8_NV                            = 0x8DAC
+       FLOAT_32_UNSIGNED_INT_24_8_REV_NV               = 0x8DAD
+       DEPTH_BUFFER_FLOAT_MODE_NV                      = 0x8DAF
+
+###############################################################################
+
+# No new tokens
+# Extension #335
+NV_fragment_program4 enum:
+
+###############################################################################
+
+# Extension #336
+NV_framebuffer_multisample_coverage enum:
+       RENDERBUFFER_COVERAGE_SAMPLES_NV                = 0x8CAB
+       RENDERBUFFER_COLOR_SAMPLES_NV                   = 0x8E10
+       MAX_MULTISAMPLE_COVERAGE_MODES_NV               = 0x8E11
+       MULTISAMPLE_COVERAGE_MODES_NV                   = 0x8E12
+
+###############################################################################
+
+# Extension #337
+# ??? Also WGL/GLX extensions ???
+EXT_framebuffer_sRGB enum:
+       FRAMEBUFFER_SRGB_EXT                            = 0x8DB9
+       FRAMEBUFFER_SRGB_CAPABLE_EXT                    = 0x8DBA
+
+###############################################################################
+
+# No new tokens
+# Extension #338
+NV_geometry_shader4 enum:
+
+###############################################################################
+
+# Extension #339
+NV_parameter_buffer_object enum:
+       MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV        = 0x8DA0
+       MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV            = 0x8DA1
+       VERTEX_PROGRAM_PARAMETER_BUFFER_NV              = 0x8DA2
+       GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV            = 0x8DA3
+       FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV            = 0x8DA4
+
+###############################################################################
+
+# No new tokens
+# Extension #340
+EXT_draw_buffers2 enum:
+
+###############################################################################
+
+# Extension #341
+NV_transform_feedback enum:
+       BACK_PRIMARY_COLOR_NV                           = 0x8C77
+       BACK_SECONDARY_COLOR_NV                         = 0x8C78
+       TEXTURE_COORD_NV                                = 0x8C79
+       CLIP_DISTANCE_NV                                = 0x8C7A
+       VERTEX_ID_NV                                    = 0x8C7B
+       PRIMITIVE_ID_NV                                 = 0x8C7C
+       GENERIC_ATTRIB_NV                               = 0x8C7D
+       TRANSFORM_FEEDBACK_ATTRIBS_NV                   = 0x8C7E
+       TRANSFORM_FEEDBACK_BUFFER_MODE_NV               = 0x8C7F
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV   = 0x8C80
+       ACTIVE_VARYINGS_NV                              = 0x8C81
+       ACTIVE_VARYING_MAX_LENGTH_NV                    = 0x8C82
+       TRANSFORM_FEEDBACK_VARYINGS_NV                  = 0x8C83
+       TRANSFORM_FEEDBACK_BUFFER_START_NV              = 0x8C84
+       TRANSFORM_FEEDBACK_BUFFER_SIZE_NV               = 0x8C85
+       TRANSFORM_FEEDBACK_RECORD_NV                    = 0x8C86
+       PRIMITIVES_GENERATED_NV                         = 0x8C87
+       TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV        = 0x8C88
+       RASTERIZER_DISCARD_NV                           = 0x8C89
+       MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV   = 0x8C8A
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV      = 0x8C8B
+       INTERLEAVED_ATTRIBS_NV                          = 0x8C8C
+       SEPARATE_ATTRIBS_NV                             = 0x8C8D
+       TRANSFORM_FEEDBACK_BUFFER_NV                    = 0x8C8E
+       TRANSFORM_FEEDBACK_BUFFER_BINDING_NV            = 0x8C8F
+
+###############################################################################
+
+# Extension #342
+EXT_bindable_uniform enum:
+       MAX_VERTEX_BINDABLE_UNIFORMS_EXT                = 0x8DE2
+       MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT              = 0x8DE3
+       MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT              = 0x8DE4
+       MAX_BINDABLE_UNIFORM_SIZE_EXT                   = 0x8DED
+       UNIFORM_BUFFER_EXT                              = 0x8DEE
+       UNIFORM_BUFFER_BINDING_EXT                      = 0x8DEF
+
+###############################################################################
+
+# Extension #343
+EXT_texture_integer enum:
+       RGBA32UI_EXT                                    = 0x8D70
+       RGB32UI_EXT                                     = 0x8D71
+       ALPHA32UI_EXT                                   = 0x8D72
+       INTENSITY32UI_EXT                               = 0x8D73
+       LUMINANCE32UI_EXT                               = 0x8D74
+       LUMINANCE_ALPHA32UI_EXT                         = 0x8D75
+       RGBA16UI_EXT                                    = 0x8D76
+       RGB16UI_EXT                                     = 0x8D77
+       ALPHA16UI_EXT                                   = 0x8D78
+       INTENSITY16UI_EXT                               = 0x8D79
+       LUMINANCE16UI_EXT                               = 0x8D7A
+       LUMINANCE_ALPHA16UI_EXT                         = 0x8D7B
+       RGBA8UI_EXT                                     = 0x8D7C
+       RGB8UI_EXT                                      = 0x8D7D
+       ALPHA8UI_EXT                                    = 0x8D7E
+       INTENSITY8UI_EXT                                = 0x8D7F
+       LUMINANCE8UI_EXT                                = 0x8D80
+       LUMINANCE_ALPHA8UI_EXT                          = 0x8D81
+       RGBA32I_EXT                                     = 0x8D82
+       RGB32I_EXT                                      = 0x8D83
+       ALPHA32I_EXT                                    = 0x8D84
+       INTENSITY32I_EXT                                = 0x8D85
+       LUMINANCE32I_EXT                                = 0x8D86
+       LUMINANCE_ALPHA32I_EXT                          = 0x8D87
+       RGBA16I_EXT                                     = 0x8D88
+       RGB16I_EXT                                      = 0x8D89
+       ALPHA16I_EXT                                    = 0x8D8A
+       INTENSITY16I_EXT                                = 0x8D8B
+       LUMINANCE16I_EXT                                = 0x8D8C
+       LUMINANCE_ALPHA16I_EXT                          = 0x8D8D
+       RGBA8I_EXT                                      = 0x8D8E
+       RGB8I_EXT                                       = 0x8D8F
+       ALPHA8I_EXT                                     = 0x8D90
+       INTENSITY8I_EXT                                 = 0x8D91
+       LUMINANCE8I_EXT                                 = 0x8D92
+       LUMINANCE_ALPHA8I_EXT                           = 0x8D93
+       RED_INTEGER_EXT                                 = 0x8D94
+       GREEN_INTEGER_EXT                               = 0x8D95
+       BLUE_INTEGER_EXT                                = 0x8D96
+       ALPHA_INTEGER_EXT                               = 0x8D97
+       RGB_INTEGER_EXT                                 = 0x8D98
+       RGBA_INTEGER_EXT                                = 0x8D99
+       BGR_INTEGER_EXT                                 = 0x8D9A
+       BGRA_INTEGER_EXT                                = 0x8D9B
+       LUMINANCE_INTEGER_EXT                           = 0x8D9C
+       LUMINANCE_ALPHA_INTEGER_EXT                     = 0x8D9D
+       RGBA_INTEGER_MODE_EXT                           = 0x8D9E
+
+###############################################################################
+
+# Extension #344 - GLX_EXT_texture_from_pixmap
+
+###############################################################################
+
+# No new tokens
+# Extension #345
+GREMEDY_frame_terminator enum:
+
+###############################################################################
+
+# Extension #346
+NV_conditional_render enum:
+       QUERY_WAIT_NV                                   = 0x8E13
+       QUERY_NO_WAIT_NV                                = 0x8E14
+       QUERY_BY_REGION_WAIT_NV                         = 0x8E15
+       QUERY_BY_REGION_NO_WAIT_NV                      = 0x8E16
+
+###############################################################################
+
+# Extension #347
+NV_present_video enum:
+       FRAME_NV                                        = 0x8E26
+       FIELDS_NV                                       = 0x8E27
+       CURRENT_TIME_NV                                 = 0x8E28
+       NUM_FILL_STREAMS_NV                             = 0x8E29
+       PRESENT_TIME_NV                                 = 0x8E2A
+       PRESENT_DURATION_NV                             = 0x8E2B
+
+###############################################################################
+
+# Extension #348 - GLX_NV_video_out
+# Extension #349 - WGL_NV_video_out
+# Extension #350 - GLX_NV_swap_group
+# Extension #351 - WGL_NV_swap_group
+
+###############################################################################
+
+# Extension #352
+EXT_transform_feedback enum:
+       TRANSFORM_FEEDBACK_BUFFER_EXT                   = 0x8C8E
+       TRANSFORM_FEEDBACK_BUFFER_START_EXT             = 0x8C84
+       TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT              = 0x8C85
+       TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT           = 0x8C8F
+       INTERLEAVED_ATTRIBS_EXT                         = 0x8C8C
+       SEPARATE_ATTRIBS_EXT                            = 0x8C8D
+       PRIMITIVES_GENERATED_EXT                        = 0x8C87
+       TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT       = 0x8C88
+       RASTERIZER_DISCARD_EXT                          = 0x8C89
+       MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = 0x8C8A
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT     = 0x8C8B
+       MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT  = 0x8C80
+       TRANSFORM_FEEDBACK_VARYINGS_EXT                 = 0x8C83
+       TRANSFORM_FEEDBACK_BUFFER_MODE_EXT              = 0x8C7F
+       TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT       = 0x8C76
+
+###############################################################################
+
+# Extension #353
+EXT_direct_state_access enum:
+       PROGRAM_MATRIX_EXT                              = 0x8E2D
+       TRANSPOSE_PROGRAM_MATRIX_EXT                    = 0x8E2E
+       PROGRAM_MATRIX_STACK_DEPTH_EXT                  = 0x8E2F
+
+###############################################################################
+
+# Extension #354
+EXT_vertex_array_bgra enum:
+       use VERSION_1_2                     BGRA
+
+###############################################################################
+
+# Extension #355 - WGL_NV_gpu_affinity
+
+###############################################################################
+
+# Extension #356
+EXT_texture_swizzle enum:
+       TEXTURE_SWIZZLE_R_EXT                           = 0x8E42
+       TEXTURE_SWIZZLE_G_EXT                           = 0x8E43
+       TEXTURE_SWIZZLE_B_EXT                           = 0x8E44
+       TEXTURE_SWIZZLE_A_EXT                           = 0x8E45
+       TEXTURE_SWIZZLE_RGBA_EXT                        = 0x8E46
+
+###############################################################################
+
+# Extension #357
+NV_explicit_multisample enum:
+       SAMPLE_POSITION_NV                              = 0x8E50
+       SAMPLE_MASK_NV                                  = 0x8E51
+       SAMPLE_MASK_VALUE_NV                            = 0x8E52
+       TEXTURE_BINDING_RENDERBUFFER_NV                 = 0x8E53
+       TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV      = 0x8E54
+       TEXTURE_RENDERBUFFER_NV                         = 0x8E55
+       SAMPLER_RENDERBUFFER_NV                         = 0x8E56
+       INT_SAMPLER_RENDERBUFFER_NV                     = 0x8E57
+       UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV            = 0x8E58
+       MAX_SAMPLE_MASK_WORDS_NV                        = 0x8E59
+
+###############################################################################
+
+# Extension #358
+NV_transform_feedback2 enum:
+       TRANSFORM_FEEDBACK_NV                           = 0x8E22
+       TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV             = 0x8E23
+       TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV             = 0x8E24
+       TRANSFORM_FEEDBACK_BINDING_NV                   = 0x8E25
+
+###############################################################################
+
+# Extension #359
+ATI_meminfo enum:
+       VBO_FREE_MEMORY_ATI                             = 0x87FB
+       TEXTURE_FREE_MEMORY_ATI                         = 0x87FC
+       RENDERBUFFER_FREE_MEMORY_ATI                    = 0x87FD
+
+###############################################################################
+
+# Extension #360
+AMD_performance_monitor enum:
+       COUNTER_TYPE_AMD                                = 0x8BC0
+       COUNTER_RANGE_AMD                               = 0x8BC1
+       UNSIGNED_INT64_AMD                              = 0x8BC2
+       PERCENTAGE_AMD                                  = 0x8BC3
+       PERFMON_RESULT_AVAILABLE_AMD                    = 0x8BC4
+       PERFMON_RESULT_SIZE_AMD                         = 0x8BC5
+       PERFMON_RESULT_AMD                              = 0x8BC6
+
+###############################################################################
+
+# Extension #361 - WGL_AMD_gpu_association
+
+###############################################################################
+
+# No new tokens
+# Extension #362
+AMD_texture_texture4 enum:
+
+###############################################################################
+
+# Extension #363
+AMD_vertex_shader_tesselator enum:
+       SAMPLER_BUFFER_AMD                              = 0x9001
+       INT_SAMPLER_BUFFER_AMD                          = 0x9002
+       UNSIGNED_INT_SAMPLER_BUFFER_AMD                 = 0x9003
+       TESSELLATION_MODE_AMD                           = 0x9004
+       TESSELLATION_FACTOR_AMD                         = 0x9005
+       DISCRETE_AMD                                    = 0x9006
+       CONTINUOUS_AMD                                  = 0x9007
+
+###############################################################################
+
+# Extension #364
+EXT_provoking_vertex enum:
+       QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT    = 0x8E4C
+       FIRST_VERTEX_CONVENTION_EXT                     = 0x8E4D
+       LAST_VERTEX_CONVENTION_EXT                      = 0x8E4E
+       PROVOKING_VERTEX_EXT                            = 0x8E4F
+
+###############################################################################
+
+# Extension #365
+EXT_texture_snorm enum:
+       ALPHA_SNORM                                     = 0x9010
+       LUMINANCE_SNORM                                 = 0x9011
+       LUMINANCE_ALPHA_SNORM                           = 0x9012
+       INTENSITY_SNORM                                 = 0x9013
+       ALPHA8_SNORM                                    = 0x9014
+       LUMINANCE8_SNORM                                = 0x9015
+       LUMINANCE8_ALPHA8_SNORM                         = 0x9016
+       INTENSITY8_SNORM                                = 0x9017
+       ALPHA16_SNORM                                   = 0x9018
+       LUMINANCE16_SNORM                               = 0x9019
+       LUMINANCE16_ALPHA16_SNORM                       = 0x901A
+       INTENSITY16_SNORM                               = 0x901B
+       use VERSION_3_1                     RED_SNORM
+       use VERSION_3_1                     RG_SNORM
+       use VERSION_3_1                     RGB_SNORM
+       use VERSION_3_1                     RGBA_SNORM
+       use VERSION_3_1                     R8_SNORM
+       use VERSION_3_1                     RG8_SNORM
+       use VERSION_3_1                     RGB8_SNORM
+       use VERSION_3_1                     RGBA8_SNORM
+       use VERSION_3_1                     R16_SNORM
+       use VERSION_3_1                     RG16_SNORM
+       use VERSION_3_1                     RGB16_SNORM
+       use VERSION_3_1                     RGBA16_SNORM
+       use VERSION_3_1                     SIGNED_NORMALIZED
+
+###############################################################################
+
+# No new tokens
+# Extension #366
+AMD_draw_buffers_blend enum:
+
+###############################################################################
+
+# Extension #367
+APPLE_texture_range enum:
+       TEXTURE_RANGE_LENGTH_APPLE                      = 0x85B7
+       TEXTURE_RANGE_POINTER_APPLE                     = 0x85B8
+       TEXTURE_STORAGE_HINT_APPLE                      = 0x85BC
+       STORAGE_PRIVATE_APPLE                           = 0x85BD
+       use APPLE_vertex_array_range        STORAGE_CACHED_APPLE
+       use APPLE_vertex_array_range        STORAGE_SHARED_APPLE
+
+###############################################################################
+
+# Extension #368
+APPLE_float_pixels enum:
+       HALF_APPLE                                      = 0x140B
+       RGBA_FLOAT32_APPLE                              = 0x8814
+       RGB_FLOAT32_APPLE                               = 0x8815
+       ALPHA_FLOAT32_APPLE                             = 0x8816
+       INTENSITY_FLOAT32_APPLE                         = 0x8817
+       LUMINANCE_FLOAT32_APPLE                         = 0x8818
+       LUMINANCE_ALPHA_FLOAT32_APPLE                   = 0x8819
+       RGBA_FLOAT16_APPLE                              = 0x881A
+       RGB_FLOAT16_APPLE                               = 0x881B
+       ALPHA_FLOAT16_APPLE                             = 0x881C
+       INTENSITY_FLOAT16_APPLE                         = 0x881D
+       LUMINANCE_FLOAT16_APPLE                         = 0x881E
+       LUMINANCE_ALPHA_FLOAT16_APPLE                   = 0x881F
+       COLOR_FLOAT_APPLE                               = 0x8A0F
+
+###############################################################################
+
+# Extension #369
+APPLE_vertex_program_evaluators enum:
+       VERTEX_ATTRIB_MAP1_APPLE                        = 0x8A00
+       VERTEX_ATTRIB_MAP2_APPLE                        = 0x8A01
+       VERTEX_ATTRIB_MAP1_SIZE_APPLE                   = 0x8A02
+       VERTEX_ATTRIB_MAP1_COEFF_APPLE                  = 0x8A03
+       VERTEX_ATTRIB_MAP1_ORDER_APPLE                  = 0x8A04
+       VERTEX_ATTRIB_MAP1_DOMAIN_APPLE                 = 0x8A05
+       VERTEX_ATTRIB_MAP2_SIZE_APPLE                   = 0x8A06
+       VERTEX_ATTRIB_MAP2_COEFF_APPLE                  = 0x8A07
+       VERTEX_ATTRIB_MAP2_ORDER_APPLE                  = 0x8A08
+       VERTEX_ATTRIB_MAP2_DOMAIN_APPLE                 = 0x8A09
+
+###############################################################################
+
+# Extension #370
+APPLE_aux_depth_stencil enum:
+       AUX_DEPTH_STENCIL_APPLE                         = 0x8A14
+
+###############################################################################
+
+# Extension #371
+APPLE_object_purgeable enum:
+       BUFFER_OBJECT_APPLE                             = 0x85B3
+       RELEASED_APPLE                                  = 0x8A19
+       VOLATILE_APPLE                                  = 0x8A1A
+       RETAINED_APPLE                                  = 0x8A1B
+       UNDEFINED_APPLE                                 = 0x8A1C
+       PURGEABLE_APPLE                                 = 0x8A1D
+
+###############################################################################
+
+# Extension #372
+APPLE_row_bytes enum:
+       PACK_ROW_BYTES_APPLE                            = 0x8A15
+       UNPACK_ROW_BYTES_APPLE                          = 0x8A16
+
+###############################################################################
+
+# Extension #373
+APPLE_rgb_422 enum:
+       RGB_422_APPLE                                   = 0x8A1F
+       use APPLE_ycbcr_422                 UNSIGNED_SHORT_8_8_APPLE
+       use APPLE_ycbcr_422                 UNSIGNED_SHORT_8_8_REV_APPLE
+
+###############################################################################
+
+# Extension #374
+
+NV_video_capture enum:
+       VIDEO_BUFFER_NV                                 = 0x9020
+       VIDEO_BUFFER_BINDING_NV                         = 0x9021
+       FIELD_UPPER_NV                                  = 0x9022
+       FIELD_LOWER_NV                                  = 0x9023
+       NUM_VIDEO_CAPTURE_STREAMS_NV                    = 0x9024
+       NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV             = 0x9025
+       VIDEO_CAPTURE_TO_422_SUPPORTED_NV               = 0x9026
+       LAST_VIDEO_CAPTURE_STATUS_NV                    = 0x9027
+       VIDEO_BUFFER_PITCH_NV                           = 0x9028
+       VIDEO_COLOR_CONVERSION_MATRIX_NV                = 0x9029
+       VIDEO_COLOR_CONVERSION_MAX_NV                   = 0x902A
+       VIDEO_COLOR_CONVERSION_MIN_NV                   = 0x902B
+       VIDEO_COLOR_CONVERSION_OFFSET_NV                = 0x902C
+       VIDEO_BUFFER_INTERNAL_FORMAT_NV                 = 0x902D
+       PARTIAL_SUCCESS_NV                              = 0x902E
+       SUCCESS_NV                                      = 0x902F
+       FAILURE_NV                                      = 0x9030
+       YCBYCR8_422_NV                                  = 0x9031
+       YCBAYCR8A_4224_NV                               = 0x9032
+       Z6Y10Z6CB10Z6Y10Z6CR10_422_NV                   = 0x9033
+       Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV        = 0x9034
+       Z4Y12Z4CB12Z4Y12Z4CR12_422_NV                   = 0x9035
+       Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV        = 0x9036
+       Z4Y12Z4CB12Z4CR12_444_NV                        = 0x9037
+       VIDEO_CAPTURE_FRAME_WIDTH_NV                    = 0x9038
+       VIDEO_CAPTURE_FRAME_HEIGHT_NV                   = 0x9039
+       VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV             = 0x903A
+       VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV             = 0x903B
+       VIDEO_CAPTURE_SURFACE_ORIGIN_NV                 = 0x903C
+
+###############################################################################
+
+# Extension #375 - GLX_EXT_swap_control
+
+###############################################################################
+
+# No new tokens
+# Extension #376 - also GLX_NV_copy_image, WGL_NV_copy_image
+NV_copy_image enum:
+
+###############################################################################
+
+# Extension #377
+EXT_separate_shader_objects enum:
+       ACTIVE_PROGRAM_EXT                              = 0x8B8D
+
+###############################################################################
+
+# No new tokens
+# Extension #378
+NV_parameter_buffer_object2 enum:
+
+###############################################################################
+
+# Extension #379
+NV_shader_buffer_load enum:
+       BUFFER_GPU_ADDRESS_NV                           = 0x8F1D
+       GPU_ADDRESS_NV                                  = 0x8F34
+       MAX_SHADER_BUFFER_ADDRESS_NV                    = 0x8F35
+
+###############################################################################
+
+# Extension #380
+NV_vertex_buffer_unified_memory enum:
+       VERTEX_ATTRIB_ARRAY_UNIFIED_NV                  = 0x8F1E
+       ELEMENT_ARRAY_UNIFIED_NV                        = 0x8F1F
+       VERTEX_ATTRIB_ARRAY_ADDRESS_NV                  = 0x8F20
+       VERTEX_ARRAY_ADDRESS_NV                         = 0x8F21
+       NORMAL_ARRAY_ADDRESS_NV                         = 0x8F22
+       COLOR_ARRAY_ADDRESS_NV                          = 0x8F23
+       INDEX_ARRAY_ADDRESS_NV                          = 0x8F24
+       TEXTURE_COORD_ARRAY_ADDRESS_NV                  = 0x8F25
+       EDGE_FLAG_ARRAY_ADDRESS_NV                      = 0x8F26
+       SECONDARY_COLOR_ARRAY_ADDRESS_NV                = 0x8F27
+       FOG_COORD_ARRAY_ADDRESS_NV                      = 0x8F28
+       ELEMENT_ARRAY_ADDRESS_NV                        = 0x8F29
+       VERTEX_ATTRIB_ARRAY_LENGTH_NV                   = 0x8F2A
+       VERTEX_ARRAY_LENGTH_NV                          = 0x8F2B
+       NORMAL_ARRAY_LENGTH_NV                          = 0x8F2C
+       COLOR_ARRAY_LENGTH_NV                           = 0x8F2D
+       INDEX_ARRAY_LENGTH_NV                           = 0x8F2E
+       TEXTURE_COORD_ARRAY_LENGTH_NV                   = 0x8F2F
+       EDGE_FLAG_ARRAY_LENGTH_NV                       = 0x8F30
+       SECONDARY_COLOR_ARRAY_LENGTH_NV                 = 0x8F31
+       FOG_COORD_ARRAY_LENGTH_NV                       = 0x8F32
+       ELEMENT_ARRAY_LENGTH_NV                         = 0x8F33
+
+###############################################################################
+
+# No new tokens
+# Extension #381
+NV_texture_barrier enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #382
+AMD_shader_stencil_export enum:
+
+###############################################################################
+
+# Extension #383
+AMD_seamless_cubemap_per_texture enum:
+    use ARB_seamless_cube_map              TEXTURE_CUBE_MAP_SEAMLESS_ARB
+
+###############################################################################
+
+# Extension #384 - GLX_INTEL_swap_event
+
+###############################################################################
+
+# No new tokens
+# Extension #385
+AMD_conservative_depth enum:
+
diff --git a/src/glx/apple/specs/gl.spec b/src/glx/apple/specs/gl.spec
new file mode 100644 (file)
index 0000000..bc054f8
--- /dev/null
@@ -0,0 +1,28563 @@
+# gl.spec file
+# DON'T REMOVE PREVIOUS LINE!!! libspec depends on it!
+#
+# Copyright (c) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2006-2010 The Khronos Group Inc.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+#
+# $Revision: 10971 $ on $Date: 2010-04-09 02:45:33 -0700 (Fri, 09 Apr 2010) $
+
+required-props:
+# Description of a parameter
+param:         retval retained
+# Display list flags
+dlflags:       notlistable handcode
+# GLX implementation flags
+glxflags:      client-intercept client-handcode server-handcode EXT SGI ignore ARB
+# Vector ('v') equivalent form of a command taking 1-4 explicit xyzw/rgba arguments
+vectorequiv:   *
+# Category this function falls in. While there are many categories for
+# early GL 1.0 functions, later functions just have a core version
+# (e.g. VERSION_major_minor) or extension name for the category.
+category:      display-list drawing drawing-control feedback framebuf misc modeling pixel-op pixel-rw state-req xform VERSION_1_0 VERSION_1_0_DEPRECATED VERSION_1_1 VERSION_1_1_DEPRECATED VERSION_1_2 VERSION_1_2_DEPRECATED VERSION_1_3 VERSION_1_3_DEPRECATED VERSION_1_4 VERSION_1_4_DEPRECATED VERSION_1_5 VERSION_2_0 VERSION_2_1 VERSION_3_0 VERSION_3_0_DEPRECATED VERSION_3_1 VERSION_3_2 VERSION_3_3 VERSION_4_0 ATI_element_array ATI_envmap_bumpmap ATI_fragment_shader ATI_pn_triangles ATI_vertex_array_object ATI_vertex_streams EXT_blend_color EXT_blend_minmax EXT_convolution EXT_copy_texture EXT_histogram EXT_polygon_offset EXT_subtexture EXT_texture3D EXT_texture_object EXT_vertex_array EXT_vertex_shader SGIS_detail_texture SGIS_multisample SGIS_pixel_texture ARB_point_parameters EXT_point_parameters SGIS_point_parameters SGIS_sharpen_texture SGIS_texture4D SGIS_texture_filter4 SGIX_async SGIX_flush_raster SGIX_fragment_lighting SGIX_framezoom SGIX_igloo_interface SGIX_instruments SGIX_list_priority SGIX_pixel_texture SGIX_polynomial_ffd SGIX_reference_plane SGIX_sprite SGIX_tag_sample_buffer SGI_color_table ARB_multitexture ARB_multisample ARB_texture_compression ARB_transpose_matrix ARB_vertex_blend ARB_matrix_palette EXT_compiled_vertex_array EXT_cull_vertex EXT_index_func EXT_index_material EXT_draw_range_elements EXT_vertex_weighting INGR_blend_func_separate NV_evaluators NV_fence NV_occlusion_query NV_point_sprite NV_register_combiners NV_register_combiners2 NV_vertex_array_range NV_vertex_program NV_vertex_program1_1_dcc MESA_resize_buffers MESA_window_pos PGI_misc_hints EXT_fog_coord EXT_blend_func_separate EXT_color_subtable EXT_coordinate_frame EXT_light_texture EXT_multi_draw_arrays EXT_paletted_texture EXT_pixel_transform EXT_secondary_color EXT_texture_perturb_normal HP_image_transform IBM_multimode_draw_arrays IBM_vertex_array_lists INTEL_parallel_arrays SUNX_constant_data SUN_global_alpha SUN_mesh_array SUN_triangle_list SUN_vertex 3DFX_tbuffer EXT_multisample SGIS_fog_function SGIS_texture_color_mask ARB_window_pos EXT_stencil_two_side EXT_depth_bounds_test EXT_blend_equation_separate ARB_vertex_program ARB_fragment_program ARB_vertex_buffer_object ARB_occlusion_query ARB_shader_objects ARB_vertex_shader ARB_fragment_shader S3_s3tc ATI_draw_buffers ATI_texture_env_combine3 ATI_texture_float NV_float_buffer NV_fragment_program NV_half_float NV_pixel_data_range NV_primitive_restart NV_texture_expand_normal NV_texture_expand_normal NV_vertex_program2 APPLE_element_array APPLE_fence APPLE_vertex_array_object APPLE_vertex_array_range ATI_draw_buffers NV_fragment_program NV_half_float NV_pixel_data_range NV_primitive_restart ATI_map_object_buffer ATI_separate_stencil ATI_vertex_attrib_array_object ARB_draw_buffers ARB_texture_rectangle ARB_color_buffer_float EXT_framebuffer_object GREMEDY_string_marker EXT_stencil_clear_tag EXT_framebuffer_blit EXT_framebuffer_multisample MESAX_texture_stack EXT_timer_query EXT_gpu_program_parameters APPLE_flush_buffer_range NV_gpu_program4 NV_geometry_program4 EXT_geometry_shader4 NV_vertex_program4 EXT_gpu_shader4 EXT_draw_instanced EXT_texture_buffer_object NV_depth_buffer_float NV_framebuffer_multisample_coverage NV_parameter_buffer_object EXT_draw_buffers2 NV_transform_feedback EXT_bindable_uniform EXT_texture_integer GREMEDY_frame_terminator NV_conditional_render NV_present_video EXT_transform_feedback ARB_depth_buffer_float ARB_draw_instanced ARB_framebuffer_object ARB_framebuffer_sRGB ARB_geometry_shader4 ARB_half_float_vertex ARB_instanced_arrays ARB_map_buffer_range ARB_texture_buffer_object ARB_texture_compression_rgtc ARB_texture_rg ARB_vertex_array_object EXT_direct_state_access EXT_vertex_array_bgra EXT_texture_swizzle NV_explicit_multisample NV_transform_feedback2 ATI_meminfo AMD_performance_monitor AMD_vertex_shader_tesselator EXT_provoking_vertex ARB_uniform_buffer_object ARB_copy_buffer EXT_texture_snorm AMD_draw_buffers_blend APPLE_texture_range APPLE_float_pixels APPLE_vertex_program_evaluators APPLE_aux_depth_stencil APPLE_object_purgeable APPLE_row_bytes ARB_draw_elements_base_vertex ARB_provoking_vertex ARB_sync ARB_texture_multisample ARB_draw_buffers_blend ARB_sample_shading NV_video_capture NV_copy_image EXT_separate_shader_objects NV_parameter_buffer_object2 NV_shader_buffer_load NV_vertex_buffer_unified_memory NV_texture_barrier ARB_shading_language_include ARB_blend_func_extended ARB_sampler_objects ARB_timer_query ARB_vertex_type_2_10_10_10_rev ARB_draw_indirect ARB_gpu_shader_fp64 ARB_shader_subroutine ARB_tessellation_shader ARB_transform_feedback2 ARB_transform_feedback3 AMD_conservative_depth
+
+# Categories for extensions with no functions - need not be included now
+# ARB_texture_env_add ARB_texture_cube_map ARB_texture_border_clamp
+# ARB_shading_language_100 ARB_texture_non_power_of_two ARB_point_sprite
+# ARB_half_float_pixel ARB_texture_float ARB_pixel_buffer_object EXT_abgr
+# EXT_texture SGI_color_matrix SGI_texture_color_table EXT_cmyka
+# EXT_packed_pixels SGIS_texture_lod EXT_rescale_normal EXT_misc_attribute
+# SGIS_generate_mipmap SGIX_clipmap SGIX_shadow SGIS_texture_edge_clamp
+# SGIS_texture_border_clamp EXT_blend_subtract EXT_blend_logic_op
+# SGIX_async_histogram SGIX_async_pixel SGIX_interlace SGIX_pixel_tiles
+# SGIX_texture_select SGIX_texture_multi_buffer SGIX_texture_scale_bias
+# SGIX_depth_texture SGIX_fog_offset HP_convolution_border_modes
+# SGIX_texture_add_env PGI_vertex_hints EXT_clip_volume_hint
+# SGIX_ir_instrument1 SGIX_calligraphic_fragment SGIX_texture_lod_bias
+# SGIX_shadow_ambient EXT_index_texture EXT_index_array_formats SGIX_ycrcb
+# IBM_rasterpos_clip HP_texture_lighting WIN_phong_shading
+# WIN_specular_fog SGIX_blend_alpha_minmax EXT_bgra HP_occlusion_test
+# EXT_pixel_transform_color_table EXT_shared_texture_palette
+# EXT_separate_specular_color EXT_texture_env REND_screen_coordinates
+# EXT_texture_env_combine APPLE_specular_vector APPLE_transform_hint
+# SGIX_fog_scale INGR_color_clamp INGR_interlace_read EXT_stencil_wrap
+# EXT_422_pixels NV_texgen_reflection SUN_convolution_border_modes
+# SUN_slice_accum EXT_texture_env_add EXT_texture_lod_bias
+# EXT_texture_filter_anisotropic NV_light_max_exponent NV_fog_distance
+# NV_texgen_emboss NV_blend_square NV_texture_env_combine4
+# NV_packed_depth_stencil NV_texture_compression_vtc NV_texture_rectangle
+# NV_texture_shader NV_texture_shader2 NV_vertex_array_range2
+# IBM_cull_vertex SGIX_subsample SGIX_ycrcba SGIX_ycrcb_subsample
+# SGIX_depth_pass_instrument 3DFX_texture_compression_FXT1
+# 3DFX_multisample SGIX_vertex_preclip SGIX_convolution_accuracy
+# SGIX_resample SGIX_scalebias_hint SGIX_texture_coordinate_clamp
+# EXT_shadow_funcs MESA_pack_invert MESA_ycbcr_texture EXT_packed_float
+# EXT_texture_array EXT_texture_compression_latc
+# EXT_texture_compression_rgtc EXT_texture_shared_exponent
+# NV_fragment_program4 EXT_framebuffer_sRGB NV_geometry_shader4
+# EXT_vertex_array_bgra ARB_depth_clamp ARB_fragment_coord_conventions
+# ARB_seamless_cube_map ARB_vertex_array_bgra ARB_texture_cube_map_array
+# ARB_texture_gather ARB_texture_query_lod
+# AMD_shader_stencil_export AMD_seamless_cubemap_per_texture
+
+# Core version in which a function was introduced, or against
+# which an extension can be implemented
+version:       1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.1 3.0 3.1 3.2 3.3 4.0
+# Core version in which a function was removed
+deprecated:    3.1
+# GLX Single, Rendering, or Vendor Private opcode
+glxsingle:     *
+glxropcode:    *
+glxvendorpriv: *
+# WGL implementation flags (incomplete)
+wglflags:      client-handcode server-handcode small-data batchable
+# Drivers in which this is implemented (very incomplete)
+extension:     future not_implemented soft WINSOFT NV10 NV20 NV50
+# Function this aliases (indistinguishable to the GL)
+alias:         *
+# Mesa dispatch table offset (incomplete)
+offset:                *
+# These properties are picked up from NVIDIA .spec files, we don't use them
+glfflags:      *
+beginend:      *
+glxvectorequiv: *
+subcategory:   *
+glextmask:     *
+
+###############################################################################
+#
+# glxsingle, glxropcode, and other GLX allocations to vendors
+# are used here, but the master registry for GLX is in
+# /ogl/trunk/doc/registry/extensions.reserved
+#
+# XFree86 dispatch offsets:    0-645
+#                              578-641     NV_vertex_program
+# GLS opcodes:                 0x0030-0x0269
+#
+###############################################################################
+
+###############################################################################
+#
+# things to remember when adding an extension command
+#
+# - append new ARB and non-ARB extensions to the appropriate portion of
+#   the spec file, in extension number order.
+# - use tabs, not spaces
+# - set glxflags to "ignore" until GLX is updated to support the new command
+# - add new data types to typemaps/spec2wire.map
+# - add extension name in alphabetical order to category list
+# - add commands within an extension in spec order
+# - use existing command entries as a model (where possible)
+# - when reserving new glxropcodes, update
+#      gfx/lib/opengl/doc/glspec/extensions.reserved to indicate this
+#
+###############################################################################
+
+# New type declarations
+
+passthru: #include <stddef.h>
+
+passthru: #ifndef GL_VERSION_2_0
+passthru: /* GL type for program/shader text */
+passthru: typedef char GLchar;
+passthru: #endif
+passthru:
+passthru: #ifndef GL_VERSION_1_5
+passthru: /* GL types for handling large vertex buffer objects */
+passthru: typedef ptrdiff_t GLintptr;
+passthru: typedef ptrdiff_t GLsizeiptr;
+passthru: #endif
+passthru:
+passthru: #ifndef GL_ARB_vertex_buffer_object
+passthru: /* GL types for handling large vertex buffer objects */
+passthru: typedef ptrdiff_t GLintptrARB;
+passthru: typedef ptrdiff_t GLsizeiptrARB;
+passthru: #endif
+passthru:
+passthru: #ifndef GL_ARB_shader_objects
+passthru: /* GL types for program/shader text and shader object handles */
+passthru: typedef char GLcharARB;
+passthru: typedef unsigned int GLhandleARB;
+passthru: #endif
+passthru:
+passthru: /* GL type for "half" precision (s10e5) float data in host memory */
+passthru: #ifndef GL_ARB_half_float_pixel
+passthru: typedef unsigned short GLhalfARB;
+passthru: #endif
+passthru:
+passthru: #ifndef GL_NV_half_float
+passthru: typedef unsigned short GLhalfNV;
+passthru: #endif
+passthru:
+passthru: #ifndef GLEXT_64_TYPES_DEFINED
+passthru: /* This code block is duplicated in glxext.h, so must be protected */
+passthru: #define GLEXT_64_TYPES_DEFINED
+passthru: /* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+passthru: /* (as used in the GL_EXT_timer_query extension). */
+passthru: #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+passthru: #include <inttypes.h>
+passthru: #elif defined(__sun__) || defined(__digital__)
+passthru: #include <inttypes.h>
+passthru: #if defined(__STDC__)
+passthru: #if defined(__arch64__) || defined(_LP64)
+passthru: typedef long int int64_t;
+passthru: typedef unsigned long int uint64_t;
+passthru: #else
+passthru: typedef long long int int64_t;
+passthru: typedef unsigned long long int uint64_t;
+passthru: #endif /* __arch64__ */
+passthru: #endif /* __STDC__ */
+passthru: #elif defined( __VMS ) || defined(__sgi)
+passthru: #include <inttypes.h>
+passthru: #elif defined(__SCO__) || defined(__USLC__)
+passthru: #include <stdint.h>
+passthru: #elif defined(__UNIXOS2__) || defined(__SOL64__)
+passthru: typedef long int int32_t;
+passthru: typedef long long int int64_t;
+passthru: typedef unsigned long long int uint64_t;
+passthru: #elif defined(_WIN32) && defined(__GNUC__)
+passthru: #include <stdint.h>
+passthru: #elif defined(_WIN32)
+passthru: typedef __int32 int32_t;
+passthru: typedef __int64 int64_t;
+passthru: typedef unsigned __int64 uint64_t;
+passthru: #else
+passthru: /* Fallback if nothing above works */
+passthru: #include <inttypes.h>
+passthru: #endif
+passthru: #endif
+passthru:
+passthru: #ifndef GL_EXT_timer_query
+passthru: typedef int64_t GLint64EXT;
+passthru: typedef uint64_t GLuint64EXT;
+passthru: #endif
+passthru:
+passthru: #ifndef ARB_sync
+passthru: typedef int64_t GLint64;
+passthru: typedef uint64_t GLuint64;
+passthru: typedef struct __GLsync *GLsync;
+passthru: #endif
+passthru:
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.0 commands
+#
+###############################################################################
+###############################################################################
+
+###############################################################################
+#
+# drawing-control commands
+#
+###############################################################################
+
+CullFace(mode)
+       return          void
+       param           mode            CullFaceMode in value
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      79
+       offset          152
+
+FrontFace(mode)
+       return          void
+       param           mode            FrontFaceDirection in value
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      84
+       offset          157
+
+Hint(target, mode)
+       return          void
+       param           target          HintTarget in value
+       param           mode            HintMode in value
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      85
+       offset          158
+
+LineWidth(width)
+       return          void
+       param           width           CheckedFloat32 in value
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      95
+       offset          168
+
+PointSize(size)
+       return          void
+       param           size            CheckedFloat32 in value
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      100
+       offset          173
+
+PolygonMode(face, mode)
+       return          void
+       param           face            MaterialFace in value
+       param           mode            PolygonMode in value
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      101
+       offset          174
+
+Scissor(x, y, width, height)
+       return          void
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      103
+       offset          176
+
+TexParameterf(target, pname, param)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           param           CheckedFloat32 in value
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      105
+       wglflags        small-data
+       offset          178
+
+TexParameterfv(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      106
+       wglflags        small-data
+       offset          179
+
+TexParameteri(target, pname, param)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           param           CheckedInt32 in value
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      107
+       wglflags        small-data
+       offset          180
+
+TexParameteriv(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0                # old: drawing-control
+       version         1.0
+       glxropcode      108
+       wglflags        small-data
+       offset          181
+
+TexImage1D(target, level, internalformat, width, border, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureComponentCount in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width)]
+       category        VERSION_1_0                # old: drawing-control
+       dlflags         handcode
+       glxflags        client-handcode server-handcode
+       version         1.0
+       glxropcode      109
+       wglflags        client-handcode server-handcode
+       offset          182
+
+TexImage2D(target, level, internalformat, width, height, border, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureComponentCount in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height)]
+       category        VERSION_1_0                # old: drawing-control
+       dlflags         handcode
+       glxflags        client-handcode server-handcode
+       version         1.0
+       glxropcode      110
+       wglflags        client-handcode server-handcode
+       offset          183
+
+###############################################################################
+#
+# framebuf commands
+#
+###############################################################################
+
+DrawBuffer(mode)
+       return          void
+       param           mode            DrawBufferMode in value
+       category        VERSION_1_0                # old: framebuf
+       version         1.0
+       glxropcode      126
+       offset          202
+
+Clear(mask)
+       return          void
+       param           mask            ClearBufferMask in value
+       category        VERSION_1_0                # old: framebuf
+       version         1.0
+       glxropcode      127
+       offset          203
+
+ClearColor(red, green, blue, alpha)
+       return          void
+       param           red             ClampedColorF in value
+       param           green           ClampedColorF in value
+       param           blue            ClampedColorF in value
+       param           alpha           ClampedColorF in value
+       category        VERSION_1_0                # old: framebuf
+       version         1.0
+       glxropcode      130
+       offset          206
+
+ClearStencil(s)
+       return          void
+       param           s               StencilValue in value
+       category        VERSION_1_0                # old: framebuf
+       version         1.0
+       glxropcode      131
+       offset          207
+
+ClearDepth(depth)
+       return          void
+       param           depth           ClampedFloat64 in value
+       category        VERSION_1_0                # old: framebuf
+       version         1.0
+       glxropcode      132
+       offset          208
+
+StencilMask(mask)
+       return          void
+       param           mask            MaskedStencilValue in value
+       category        VERSION_1_0                # old: framebuf
+       version         1.0
+       glxropcode      133
+       offset          209
+
+ColorMask(red, green, blue, alpha)
+       return          void
+       param           red             Boolean in value
+       param           green           Boolean in value
+       param           blue            Boolean in value
+       param           alpha           Boolean in value
+       category        VERSION_1_0                # old: framebuf
+       version         1.0
+       glxropcode      134
+       offset          210
+
+DepthMask(flag)
+       return          void
+       param           flag            Boolean in value
+       category        VERSION_1_0                # old: framebuf
+       version         1.0
+       glxropcode      135
+       offset          211
+
+###############################################################################
+#
+# misc commands
+#
+###############################################################################
+
+Disable(cap)
+       return          void
+       param           cap             EnableCap in value
+       category        VERSION_1_0                # old: misc
+       version         1.0
+       dlflags         handcode
+       glxflags        client-handcode client-intercept
+       glxropcode      138
+       offset          214
+
+Enable(cap)
+       return          void
+       param           cap             EnableCap in value
+       category        VERSION_1_0                # old: misc
+       version         1.0
+       dlflags         handcode
+       glxflags        client-handcode client-intercept
+       glxropcode      139
+       offset          215
+
+Finish()
+       return          void
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        VERSION_1_0                # old: misc
+       version         1.0
+       glxsingle       108
+       offset          216
+
+Flush()
+       return          void
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       category        VERSION_1_0                # old: misc
+       version         1.0
+       glxsingle       142
+       offset          217
+
+###############################################################################
+#
+# pixel-op commands
+#
+###############################################################################
+
+BlendFunc(sfactor, dfactor)
+       return          void
+       param           sfactor         BlendingFactorSrc in value
+       param           dfactor         BlendingFactorDest in value
+       category        VERSION_1_0                # old: pixel-op
+       version         1.0
+       glxropcode      160
+       offset          241
+
+LogicOp(opcode)
+       return          void
+       param           opcode          LogicOp in value
+       category        VERSION_1_0                # old: pixel-op
+       version         1.0
+       glxropcode      161
+       offset          242
+
+StencilFunc(func, ref, mask)
+       return          void
+       param           func            StencilFunction in value
+       param           ref             ClampedStencilValue in value
+       param           mask            MaskedStencilValue in value
+       category        VERSION_1_0                # old: pixel-op
+       version         1.0
+       glxropcode      162
+       offset          243
+
+StencilOp(fail, zfail, zpass)
+       return          void
+       param           fail            StencilOp in value
+       param           zfail           StencilOp in value
+       param           zpass           StencilOp in value
+       category        VERSION_1_0                # old: pixel-op
+       version         1.0
+       glxropcode      163
+       offset          244
+
+DepthFunc(func)
+       return          void
+       param           func            DepthFunction in value
+       category        VERSION_1_0                # old: pixel-op
+       version         1.0
+       glxropcode      164
+       offset          245
+
+###############################################################################
+#
+# pixel-rw commands
+#
+###############################################################################
+
+PixelStoref(pname, param)
+       return          void
+       param           pname           PixelStoreParameter in value
+       param           param           CheckedFloat32 in value
+       dlflags         notlistable
+       glxflags        client-handcode
+       category        VERSION_1_0                # old: pixel-rw
+       version         1.0
+       glxsingle       109
+       wglflags        batchable
+       offset          249
+
+PixelStorei(pname, param)
+       return          void
+       param           pname           PixelStoreParameter in value
+       param           param           CheckedInt32 in value
+       dlflags         notlistable
+       glxflags        client-handcode
+       category        VERSION_1_0                # old: pixel-rw
+       version         1.0
+       glxsingle       110
+       wglflags        batchable
+       offset          250
+
+ReadBuffer(mode)
+       return          void
+       param           mode            ReadBufferMode in value
+       category        VERSION_1_0                # old: pixel-rw
+       version         1.0
+       glxropcode      171
+       offset          254
+
+ReadPixels(x, y, width, height, format, type, pixels)
+       return          void
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void out array [COMPSIZE(format/type/width/height)]
+       category        VERSION_1_0                # old: pixel-rw
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.0
+       glxsingle       111
+       wglflags        client-handcode server-handcode
+       offset          256
+
+###############################################################################
+#
+# state-req commands
+#
+###############################################################################
+
+GetBooleanv(pname, params)
+       return          void
+       param           pname           GetPName in value
+       param           params          Boolean out array [COMPSIZE(pname)]
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       glxflags        client-handcode
+       version         1.0
+       glxsingle       112
+       wglflags        small-data
+       offset          258
+
+GetDoublev(pname, params)
+       return          void
+       param           pname           GetPName in value
+       param           params          Float64 out array [COMPSIZE(pname)]
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       glxflags        client-handcode
+       version         1.0
+       glxsingle       114
+       wglflags        small-data
+       offset          260
+
+GetError()
+       return          ErrorCode
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       glxflags        client-handcode
+       version         1.0
+       glxsingle       115
+       offset          261
+
+GetFloatv(pname, params)
+       return          void
+       param           pname           GetPName in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       glxflags        client-handcode
+       version         1.0
+       glxsingle       116
+       wglflags        small-data
+       offset          262
+
+GetIntegerv(pname, params)
+       return          void
+       param           pname           GetPName in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       glxflags        client-handcode
+       version         1.0
+       glxsingle       117
+       wglflags        small-data
+       offset          263
+
+GetString(name)
+       return          String
+       param           name            StringName in value
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.0
+       glxsingle       129
+       wglflags        client-handcode server-handcode
+       offset          275
+
+GetTexImage(target, level, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void out array [COMPSIZE(target/level/format/type)]
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.0
+       glxsingle       135
+       wglflags        client-handcode server-handcode
+       offset          281
+
+GetTexParameterfv(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       version         1.0
+       glxsingle       136
+       wglflags        small-data
+       offset          282
+
+GetTexParameteriv(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       version         1.0
+       glxsingle       137
+       wglflags        small-data
+       offset          283
+
+GetTexLevelParameterfv(target, level, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           pname           GetTextureParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       version         1.0
+       glxsingle       138
+       wglflags        small-data
+       offset          284
+
+GetTexLevelParameteriv(target, level, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           pname           GetTextureParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       version         1.0
+       glxsingle       139
+       wglflags        small-data
+       offset          285
+
+IsEnabled(cap)
+       return          Boolean
+       param           cap             EnableCap in value
+       category        VERSION_1_0                # old: state-req
+       dlflags         notlistable
+       version         1.0
+       glxflags        client-handcode client-intercept
+       glxsingle       140
+       offset          286
+
+###############################################################################
+#
+# xform commands
+#
+###############################################################################
+
+DepthRange(near, far)
+       return          void
+       param           near            ClampedFloat64 in value
+       param           far             ClampedFloat64 in value
+       category        VERSION_1_0                # old: xform
+       version         1.0
+       glxropcode      174
+       offset          288
+
+Viewport(x, y, width, height)
+       return          void
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        VERSION_1_0                # old: xform
+       version         1.0
+       glxropcode      191
+       offset          305
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.0 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+# display-list commands
+
+NewList(list, mode)
+       return          void
+       param           list            List in value
+       param           mode            ListMode in value
+       dlflags         notlistable
+       category        VERSION_1_0_DEPRECATED     # old: display-list
+       version         1.0
+       deprecated      3.1
+       glxsingle       101
+       wglflags        batchable
+       offset          0
+
+EndList()
+       return          void
+       dlflags         notlistable
+       category        VERSION_1_0_DEPRECATED     # old: display-list
+       version         1.0
+       deprecated      3.1
+       glxsingle       102
+       wglflags        batchable
+       offset          1
+
+CallList(list)
+       return          void
+       param           list            List in value
+       category        VERSION_1_0_DEPRECATED     # old: display-list
+       version         1.0
+       deprecated      3.1
+       glxropcode      1
+       offset          2
+
+CallLists(n, type, lists)
+       return          void
+       param           n               SizeI in value
+       param           type            ListNameType in value
+       param           lists           Void in array [COMPSIZE(n/type)]
+       category        VERSION_1_0_DEPRECATED     # old: display-list
+       glxflags        client-handcode server-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      2
+       offset          3
+
+DeleteLists(list, range)
+       return          void
+       param           list            List in value
+       param           range           SizeI in value
+       dlflags         notlistable
+       category        VERSION_1_0_DEPRECATED     # old: display-list
+       version         1.0
+       deprecated      3.1
+       glxsingle       103
+       wglflags        batchable
+       offset          4
+
+GenLists(range)
+       return          List
+       param           range           SizeI in value
+       dlflags         notlistable
+       category        VERSION_1_0_DEPRECATED     # old: display-list
+       version         1.0
+       deprecated      3.1
+       glxsingle       104
+       offset          5
+
+ListBase(base)
+       return          void
+       param           base            List in value
+       category        VERSION_1_0_DEPRECATED     # old: display-list
+       version         1.0
+       deprecated      3.1
+       glxropcode      3
+       offset          6
+
+# drawing commands
+
+Begin(mode)
+       return          void
+       param           mode            BeginMode in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      4
+       offset          7
+
+Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap)
+       return          void
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           xorig           CoordF in value
+       param           yorig           CoordF in value
+       param           xmove           CoordF in value
+       param           ymove           CoordF in value
+       param           bitmap          UInt8 in array [COMPSIZE(width/height)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       dlflags         handcode
+       glxflags        client-handcode server-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      5
+       wglflags        client-handcode server-handcode
+       offset          8
+
+Color3b(red, green, blue)
+       return          void
+       param           red             ColorB in value
+       param           green           ColorB in value
+       param           blue            ColorB in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color3bv
+       version         1.0
+       deprecated      3.1
+       offset          9
+
+Color3bv(v)
+       return          void
+       param           v               ColorB in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      6
+       offset          10
+
+Color3d(red, green, blue)
+       return          void
+       param           red             ColorD in value
+       param           green           ColorD in value
+       param           blue            ColorD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color3dv
+       version         1.0
+       deprecated      3.1
+       offset          11
+
+Color3dv(v)
+       return          void
+       param           v               ColorD in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      7
+       offset          12
+
+Color3f(red, green, blue)
+       return          void
+       param           red             ColorF in value
+       param           green           ColorF in value
+       param           blue            ColorF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color3fv
+       version         1.0
+       deprecated      3.1
+       offset          13
+
+Color3fv(v)
+       return          void
+       param           v               ColorF in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      8
+       offset          14
+
+Color3i(red, green, blue)
+       return          void
+       param           red             ColorI in value
+       param           green           ColorI in value
+       param           blue            ColorI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color3iv
+       version         1.0
+       deprecated      3.1
+       offset          15
+
+Color3iv(v)
+       return          void
+       param           v               ColorI in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      9
+       offset          16
+
+Color3s(red, green, blue)
+       return          void
+       param           red             ColorS in value
+       param           green           ColorS in value
+       param           blue            ColorS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color3sv
+       version         1.0
+       deprecated      3.1
+       offset          17
+
+Color3sv(v)
+       return          void
+       param           v               ColorS in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      10
+       offset          18
+
+Color3ub(red, green, blue)
+       return          void
+       param           red             ColorUB in value
+       param           green           ColorUB in value
+       param           blue            ColorUB in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color3ubv
+       version         1.0
+       deprecated      3.1
+       offset          19
+
+Color3ubv(v)
+       return          void
+       param           v               ColorUB in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      11
+       offset          20
+
+Color3ui(red, green, blue)
+       return          void
+       param           red             ColorUI in value
+       param           green           ColorUI in value
+       param           blue            ColorUI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color3uiv
+       version         1.0
+       deprecated      3.1
+       offset          21
+
+Color3uiv(v)
+       return          void
+       param           v               ColorUI in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      12
+       offset          22
+
+Color3us(red, green, blue)
+       return          void
+       param           red             ColorUS in value
+       param           green           ColorUS in value
+       param           blue            ColorUS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color3usv
+       version         1.0
+       deprecated      3.1
+       offset          23
+
+Color3usv(v)
+       return          void
+       param           v               ColorUS in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      13
+       offset          24
+
+Color4b(red, green, blue, alpha)
+       return          void
+       param           red             ColorB in value
+       param           green           ColorB in value
+       param           blue            ColorB in value
+       param           alpha           ColorB in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color4bv
+       version         1.0
+       deprecated      3.1
+       offset          25
+
+Color4bv(v)
+       return          void
+       param           v               ColorB in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      14
+       offset          26
+
+Color4d(red, green, blue, alpha)
+       return          void
+       param           red             ColorD in value
+       param           green           ColorD in value
+       param           blue            ColorD in value
+       param           alpha           ColorD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color4dv
+       version         1.0
+       deprecated      3.1
+       offset          27
+
+Color4dv(v)
+       return          void
+       param           v               ColorD in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      15
+       offset          28
+
+Color4f(red, green, blue, alpha)
+       return          void
+       param           red             ColorF in value
+       param           green           ColorF in value
+       param           blue            ColorF in value
+       param           alpha           ColorF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color4fv
+       version         1.0
+       deprecated      3.1
+       offset          29
+
+Color4fv(v)
+       return          void
+       param           v               ColorF in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      16
+       offset          30
+
+Color4i(red, green, blue, alpha)
+       return          void
+       param           red             ColorI in value
+       param           green           ColorI in value
+       param           blue            ColorI in value
+       param           alpha           ColorI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color4iv
+       version         1.0
+       deprecated      3.1
+       offset          31
+
+Color4iv(v)
+       return          void
+       param           v               ColorI in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      17
+       offset          32
+
+Color4s(red, green, blue, alpha)
+       return          void
+       param           red             ColorS in value
+       param           green           ColorS in value
+       param           blue            ColorS in value
+       param           alpha           ColorS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color4sv
+       version         1.0
+       deprecated      3.1
+       offset          33
+
+Color4sv(v)
+       return          void
+       param           v               ColorS in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      18
+       offset          34
+
+Color4ub(red, green, blue, alpha)
+       return          void
+       param           red             ColorUB in value
+       param           green           ColorUB in value
+       param           blue            ColorUB in value
+       param           alpha           ColorUB in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color4ubv
+       version         1.0
+       deprecated      3.1
+       offset          35
+
+Color4ubv(v)
+       return          void
+       param           v               ColorUB in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      19
+       offset          36
+
+Color4ui(red, green, blue, alpha)
+       return          void
+       param           red             ColorUI in value
+       param           green           ColorUI in value
+       param           blue            ColorUI in value
+       param           alpha           ColorUI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color4uiv
+       version         1.0
+       deprecated      3.1
+       offset          37
+
+Color4uiv(v)
+       return          void
+       param           v               ColorUI in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      20
+       offset          38
+
+Color4us(red, green, blue, alpha)
+       return          void
+       param           red             ColorUS in value
+       param           green           ColorUS in value
+       param           blue            ColorUS in value
+       param           alpha           ColorUS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Color4usv
+       version         1.0
+       deprecated      3.1
+       offset          39
+
+Color4usv(v)
+       return          void
+       param           v               ColorUS in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      21
+       offset          40
+
+EdgeFlag(flag)
+       return          void
+       param           flag            Boolean in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     EdgeFlagv
+       version         1.0
+       deprecated      3.1
+       offset          41
+
+EdgeFlagv(flag)
+       return          void
+       param           flag            Boolean in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      22
+       offset          42
+
+End()
+       return          void
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      23
+       offset          43
+
+Indexd(c)
+       return          void
+       param           c               ColorIndexValueD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Indexdv
+       version         1.0
+       deprecated      3.1
+       offset          44
+
+Indexdv(c)
+       return          void
+       param           c               ColorIndexValueD in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      24
+       offset          45
+
+Indexf(c)
+       return          void
+       param           c               ColorIndexValueF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Indexfv
+       version         1.0
+       deprecated      3.1
+       offset          46
+
+Indexfv(c)
+       return          void
+       param           c               ColorIndexValueF in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      25
+       offset          47
+
+Indexi(c)
+       return          void
+       param           c               ColorIndexValueI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Indexiv
+       version         1.0
+       deprecated      3.1
+       offset          48
+
+Indexiv(c)
+       return          void
+       param           c               ColorIndexValueI in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      26
+       offset          49
+
+Indexs(c)
+       return          void
+       param           c               ColorIndexValueS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Indexsv
+       version         1.0
+       deprecated      3.1
+       offset          50
+
+Indexsv(c)
+       return          void
+       param           c               ColorIndexValueS in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      27
+       offset          51
+
+Normal3b(nx, ny, nz)
+       return          void
+       param           nx              Int8 in value
+       param           ny              Int8 in value
+       param           nz              Int8 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Normal3bv
+       version         1.0
+       deprecated      3.1
+       offset          52
+
+Normal3bv(v)
+       return          void
+       param           v               Int8 in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      28
+       offset          53
+
+Normal3d(nx, ny, nz)
+       return          void
+       param           nx              CoordD in value
+       param           ny              CoordD in value
+       param           nz              CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Normal3dv
+       version         1.0
+       deprecated      3.1
+       offset          54
+
+Normal3dv(v)
+       return          void
+       param           v               CoordD in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      29
+       offset          55
+
+Normal3f(nx, ny, nz)
+       return          void
+       param           nx              CoordF in value
+       param           ny              CoordF in value
+       param           nz              CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Normal3fv
+       version         1.0
+       deprecated      3.1
+       offset          56
+
+Normal3fv(v)
+       return          void
+       param           v               CoordF in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      30
+       offset          57
+
+Normal3i(nx, ny, nz)
+       return          void
+       param           nx              Int32 in value
+       param           ny              Int32 in value
+       param           nz              Int32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Normal3iv
+       version         1.0
+       deprecated      3.1
+       offset          58
+
+Normal3iv(v)
+       return          void
+       param           v               Int32 in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      31
+       offset          59
+
+Normal3s(nx, ny, nz)
+       return          void
+       param           nx              Int16 in value
+       param           ny              Int16 in value
+       param           nz              Int16 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Normal3sv
+       version         1.0
+       deprecated      3.1
+       offset          60
+
+Normal3sv(v)
+       return          void
+       param           v               Int16 in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      32
+       offset          61
+
+RasterPos2d(x, y)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     RasterPos2dv
+       version         1.0
+       deprecated      3.1
+       offset          62
+
+RasterPos2dv(v)
+       return          void
+       param           v               CoordD in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      33
+       offset          63
+
+RasterPos2f(x, y)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     RasterPos2fv
+       version         1.0
+       deprecated      3.1
+       offset          64
+
+RasterPos2fv(v)
+       return          void
+       param           v               CoordF in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      34
+       offset          65
+
+RasterPos2i(x, y)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     RasterPos2iv
+       version         1.0
+       deprecated      3.1
+       offset          66
+
+RasterPos2iv(v)
+       return          void
+       param           v               CoordI in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      35
+       offset          67
+
+RasterPos2s(x, y)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     RasterPos2sv
+       version         1.0
+       deprecated      3.1
+       offset          68
+
+RasterPos2sv(v)
+       return          void
+       param           v               CoordS in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      36
+       offset          69
+
+RasterPos3d(x, y, z)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       param           z               CoordD in value
+       vectorequiv     RasterPos3dv
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       offset          70
+
+RasterPos3dv(v)
+       return          void
+       param           v               CoordD in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      37
+       offset          71
+
+RasterPos3f(x, y, z)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       param           z               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     RasterPos3fv
+       version         1.0
+       deprecated      3.1
+       offset          72
+
+RasterPos3fv(v)
+       return          void
+       param           v               CoordF in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      38
+       offset          73
+
+RasterPos3i(x, y, z)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       param           z               CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     RasterPos3iv
+       version         1.0
+       deprecated      3.1
+       offset          74
+
+RasterPos3iv(v)
+       return          void
+       param           v               CoordI in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      39
+       offset          75
+
+RasterPos3s(x, y, z)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       param           z               CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     RasterPos3sv
+       version         1.0
+       deprecated      3.1
+       offset          76
+
+RasterPos3sv(v)
+       return          void
+       param           v               CoordS in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      40
+       offset          77
+
+RasterPos4d(x, y, z, w)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       param           z               CoordD in value
+       param           w               CoordD in value
+       vectorequiv     RasterPos4dv
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       offset          78
+
+RasterPos4dv(v)
+       return          void
+       param           v               CoordD in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      41
+       offset          79
+
+RasterPos4f(x, y, z, w)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       param           z               CoordF in value
+       param           w               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     RasterPos4fv
+       version         1.0
+       deprecated      3.1
+       offset          80
+
+RasterPos4fv(v)
+       return          void
+       param           v               CoordF in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      42
+       offset          81
+
+RasterPos4i(x, y, z, w)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       param           z               CoordI in value
+       param           w               CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     RasterPos4iv
+       version         1.0
+       deprecated      3.1
+       offset          82
+
+RasterPos4iv(v)
+       return          void
+       param           v               CoordI in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      43
+       offset          83
+
+RasterPos4s(x, y, z, w)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       param           z               CoordS in value
+       param           w               CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     RasterPos4sv
+       version         1.0
+       deprecated      3.1
+       offset          84
+
+RasterPos4sv(v)
+       return          void
+       param           v               CoordS in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      44
+       offset          85
+
+Rectd(x1, y1, x2, y2)
+       return          void
+       param           x1              CoordD in value
+       param           y1              CoordD in value
+       param           x2              CoordD in value
+       param           y2              CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Rectdv
+       version         1.0
+       deprecated      3.1
+       offset          86
+
+Rectdv(v1, v2)
+       return          void
+       param           v1              CoordD in array [2]
+       param           v2              CoordD in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      45
+       offset          87
+
+Rectf(x1, y1, x2, y2)
+       return          void
+       param           x1              CoordF in value
+       param           y1              CoordF in value
+       param           x2              CoordF in value
+       param           y2              CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Rectfv
+       version         1.0
+       deprecated      3.1
+       offset          88
+
+Rectfv(v1, v2)
+       return          void
+       param           v1              CoordF in array [2]
+       param           v2              CoordF in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      46
+       offset          89
+
+Recti(x1, y1, x2, y2)
+       return          void
+       param           x1              CoordI in value
+       param           y1              CoordI in value
+       param           x2              CoordI in value
+       param           y2              CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Rectiv
+       version         1.0
+       deprecated      3.1
+       offset          90
+
+Rectiv(v1, v2)
+       return          void
+       param           v1              CoordI in array [2]
+       param           v2              CoordI in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      47
+       offset          91
+
+Rects(x1, y1, x2, y2)
+       return          void
+       param           x1              CoordS in value
+       param           y1              CoordS in value
+       param           x2              CoordS in value
+       param           y2              CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Rectsv
+       version         1.0
+       deprecated      3.1
+       offset          92
+
+Rectsv(v1, v2)
+       return          void
+       param           v1              CoordS in array [2]
+       param           v2              CoordS in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      48
+       offset          93
+
+TexCoord1d(s)
+       return          void
+       param           s               CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord1dv
+       version         1.0
+       deprecated      3.1
+       offset          94
+
+TexCoord1dv(v)
+       return          void
+       param           v               CoordD in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      49
+       offset          95
+
+TexCoord1f(s)
+       return          void
+       param           s               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord1fv
+       version         1.0
+       deprecated      3.1
+       offset          96
+
+TexCoord1fv(v)
+       return          void
+       param           v               CoordF in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      50
+       offset          97
+
+TexCoord1i(s)
+       return          void
+       param           s               CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord1iv
+       version         1.0
+       deprecated      3.1
+       offset          98
+
+TexCoord1iv(v)
+       return          void
+       param           v               CoordI in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      51
+       offset          99
+
+TexCoord1s(s)
+       return          void
+       param           s               CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord1sv
+       version         1.0
+       deprecated      3.1
+       offset          100
+
+TexCoord1sv(v)
+       return          void
+       param           v               CoordS in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      52
+       offset          101
+
+TexCoord2d(s, t)
+       return          void
+       param           s               CoordD in value
+       param           t               CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord2dv
+       version         1.0
+       deprecated      3.1
+       offset          102
+
+TexCoord2dv(v)
+       return          void
+       param           v               CoordD in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      53
+       offset          103
+
+TexCoord2f(s, t)
+       return          void
+       param           s               CoordF in value
+       param           t               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord2fv
+       version         1.0
+       deprecated      3.1
+       offset          104
+
+TexCoord2fv(v)
+       return          void
+       param           v               CoordF in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      54
+       offset          105
+
+TexCoord2i(s, t)
+       return          void
+       param           s               CoordI in value
+       param           t               CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord2iv
+       version         1.0
+       deprecated      3.1
+       offset          106
+
+TexCoord2iv(v)
+       return          void
+       param           v               CoordI in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      55
+       offset          107
+
+TexCoord2s(s, t)
+       return          void
+       param           s               CoordS in value
+       param           t               CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord2sv
+       version         1.0
+       deprecated      3.1
+       offset          108
+
+TexCoord2sv(v)
+       return          void
+       param           v               CoordS in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      56
+       offset          109
+
+TexCoord3d(s, t, r)
+       return          void
+       param           s               CoordD in value
+       param           t               CoordD in value
+       param           r               CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord3dv
+       version         1.0
+       deprecated      3.1
+       offset          110
+
+TexCoord3dv(v)
+       return          void
+       param           v               CoordD in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      57
+       offset          111
+
+TexCoord3f(s, t, r)
+       return          void
+       param           s               CoordF in value
+       param           t               CoordF in value
+       param           r               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord3fv
+       version         1.0
+       deprecated      3.1
+       offset          112
+
+TexCoord3fv(v)
+       return          void
+       param           v               CoordF in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      58
+       offset          113
+
+TexCoord3i(s, t, r)
+       return          void
+       param           s               CoordI in value
+       param           t               CoordI in value
+       param           r               CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord3iv
+       version         1.0
+       deprecated      3.1
+       offset          114
+
+TexCoord3iv(v)
+       return          void
+       param           v               CoordI in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      59
+       offset          115
+
+TexCoord3s(s, t, r)
+       return          void
+       param           s               CoordS in value
+       param           t               CoordS in value
+       param           r               CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord3sv
+       version         1.0
+       deprecated      3.1
+       offset          116
+
+TexCoord3sv(v)
+       return          void
+       param           v               CoordS in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      60
+       offset          117
+
+TexCoord4d(s, t, r, q)
+       return          void
+       param           s               CoordD in value
+       param           t               CoordD in value
+       param           r               CoordD in value
+       param           q               CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord4dv
+       version         1.0
+       deprecated      3.1
+       offset          118
+
+TexCoord4dv(v)
+       return          void
+       param           v               CoordD in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      61
+       offset          119
+
+TexCoord4f(s, t, r, q)
+       return          void
+       param           s               CoordF in value
+       param           t               CoordF in value
+       param           r               CoordF in value
+       param           q               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord4fv
+       version         1.0
+       deprecated      3.1
+       offset          120
+
+TexCoord4fv(v)
+       return          void
+       param           v               CoordF in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      62
+       offset          121
+
+TexCoord4i(s, t, r, q)
+       return          void
+       param           s               CoordI in value
+       param           t               CoordI in value
+       param           r               CoordI in value
+       param           q               CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord4iv
+       version         1.0
+       deprecated      3.1
+       offset          122
+
+TexCoord4iv(v)
+       return          void
+       param           v               CoordI in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      63
+       offset          123
+
+TexCoord4s(s, t, r, q)
+       return          void
+       param           s               CoordS in value
+       param           t               CoordS in value
+       param           r               CoordS in value
+       param           q               CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     TexCoord4sv
+       version         1.0
+       deprecated      3.1
+       offset          124
+
+TexCoord4sv(v)
+       return          void
+       param           v               CoordS in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      64
+       offset          125
+
+Vertex2d(x, y)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex2dv
+       version         1.0
+       deprecated      3.1
+       offset          126
+
+Vertex2dv(v)
+       return          void
+       param           v               CoordD in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      65
+       offset          127
+
+Vertex2f(x, y)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex2fv
+       version         1.0
+       deprecated      3.1
+       offset          128
+
+Vertex2fv(v)
+       return          void
+       param           v               CoordF in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      66
+       offset          129
+
+Vertex2i(x, y)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex2iv
+       version         1.0
+       deprecated      3.1
+       offset          130
+
+Vertex2iv(v)
+       return          void
+       param           v               CoordI in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      67
+       offset          131
+
+Vertex2s(x, y)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex2sv
+       version         1.0
+       deprecated      3.1
+       offset          132
+
+Vertex2sv(v)
+       return          void
+       param           v               CoordS in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      68
+       offset          133
+
+Vertex3d(x, y, z)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       param           z               CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex3dv
+       version         1.0
+       deprecated      3.1
+       offset          134
+
+Vertex3dv(v)
+       return          void
+       param           v               CoordD in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      69
+       offset          135
+
+Vertex3f(x, y, z)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       param           z               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex3fv
+       version         1.0
+       deprecated      3.1
+       offset          136
+
+Vertex3fv(v)
+       return          void
+       param           v               CoordF in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      70
+       offset          137
+
+Vertex3i(x, y, z)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       param           z               CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex3iv
+       version         1.0
+       deprecated      3.1
+       offset          138
+
+Vertex3iv(v)
+       return          void
+       param           v               CoordI in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      71
+       offset          139
+
+Vertex3s(x, y, z)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       param           z               CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex3sv
+       version         1.0
+       deprecated      3.1
+       offset          140
+
+Vertex3sv(v)
+       return          void
+       param           v               CoordS in array [3]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      72
+       offset          141
+
+Vertex4d(x, y, z, w)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       param           z               CoordD in value
+       param           w               CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex4dv
+       version         1.0
+       deprecated      3.1
+       offset          142
+
+Vertex4dv(v)
+       return          void
+       param           v               CoordD in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      73
+       offset          143
+
+Vertex4f(x, y, z, w)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       param           z               CoordF in value
+       param           w               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex4fv
+       version         1.0
+       deprecated      3.1
+       offset          144
+
+Vertex4fv(v)
+       return          void
+       param           v               CoordF in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      74
+       offset          145
+
+Vertex4i(x, y, z, w)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       param           z               CoordI in value
+       param           w               CoordI in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex4iv
+       version         1.0
+       deprecated      3.1
+       offset          146
+
+Vertex4iv(v)
+       return          void
+       param           v               CoordI in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      75
+       offset          147
+
+Vertex4s(x, y, z, w)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       param           z               CoordS in value
+       param           w               CoordS in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       vectorequiv     Vertex4sv
+       version         1.0
+       deprecated      3.1
+       offset          148
+
+Vertex4sv(v)
+       return          void
+       param           v               CoordS in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing
+       version         1.0
+       deprecated      3.1
+       glxropcode      76
+       offset          149
+
+ClipPlane(plane, equation)
+       return          void
+       param           plane           ClipPlaneName in value
+       param           equation        Float64 in array [4]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      77
+       offset          150
+
+ColorMaterial(face, mode)
+       return          void
+       param           face            MaterialFace in value
+       param           mode            ColorMaterialParameter in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      78
+       offset          151
+
+Fogf(pname, param)
+       return          void
+       param           pname           FogParameter in value
+       param           param           CheckedFloat32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      80
+       wglflags        small-data
+       offset          153
+
+Fogfv(pname, params)
+       return          void
+       param           pname           FogParameter in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      81
+       wglflags        small-data
+       offset          154
+
+Fogi(pname, param)
+       return          void
+       param           pname           FogParameter in value
+       param           param           CheckedInt32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      82
+       wglflags        small-data
+       offset          155
+
+Fogiv(pname, params)
+       return          void
+       param           pname           FogParameter in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      83
+       wglflags        small-data
+       offset          156
+
+Lightf(light, pname, param)
+       return          void
+       param           light           LightName in value
+       param           pname           LightParameter in value
+       param           param           CheckedFloat32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      86
+       wglflags        small-data
+       offset          159
+
+Lightfv(light, pname, params)
+       return          void
+       param           light           LightName in value
+       param           pname           LightParameter in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      87
+       wglflags        small-data
+       offset          160
+
+Lighti(light, pname, param)
+       return          void
+       param           light           LightName in value
+       param           pname           LightParameter in value
+       param           param           CheckedInt32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      88
+       wglflags        small-data
+       offset          161
+
+Lightiv(light, pname, params)
+       return          void
+       param           light           LightName in value
+       param           pname           LightParameter in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      89
+       wglflags        small-data
+       offset          162
+
+LightModelf(pname, param)
+       return          void
+       param           pname           LightModelParameter in value
+       param           param           Float32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      90
+       wglflags        small-data
+       offset          163
+
+LightModelfv(pname, params)
+       return          void
+       param           pname           LightModelParameter in value
+       param           params          Float32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      91
+       wglflags        small-data
+       offset          164
+
+LightModeli(pname, param)
+       return          void
+       param           pname           LightModelParameter in value
+       param           param           Int32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      92
+       wglflags        small-data
+       offset          165
+
+LightModeliv(pname, params)
+       return          void
+       param           pname           LightModelParameter in value
+       param           params          Int32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      93
+       wglflags        small-data
+       offset          166
+
+LineStipple(factor, pattern)
+       return          void
+       param           factor          CheckedInt32 in value
+       param           pattern         LineStipple in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      94
+       offset          167
+
+Materialf(face, pname, param)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           param           CheckedFloat32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      96
+       wglflags        small-data
+       offset          169
+
+Materialfv(face, pname, params)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      97
+       wglflags        small-data
+       offset          170
+
+Materiali(face, pname, param)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           param           CheckedInt32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      98
+       wglflags        small-data
+       offset          171
+
+Materialiv(face, pname, params)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      99
+       wglflags        small-data
+       offset          172
+
+PolygonStipple(mask)
+       return          void
+       param           mask            UInt8 in array [COMPSIZE()]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       dlflags         handcode
+       glxflags        client-handcode server-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      102
+       wglflags        client-handcode server-handcode
+       offset          175
+
+ShadeModel(mode)
+       return          void
+       param           mode            ShadingModel in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      104
+       offset          177
+
+TexEnvf(target, pname, param)
+       return          void
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           param           CheckedFloat32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      111
+       wglflags        small-data
+       offset          184
+
+TexEnvfv(target, pname, params)
+       return          void
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      112
+       wglflags        small-data
+       offset          185
+
+TexEnvi(target, pname, param)
+       return          void
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           param           CheckedInt32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      113
+       wglflags        small-data
+       offset          186
+
+TexEnviv(target, pname, params)
+       return          void
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      114
+       wglflags        small-data
+       offset          187
+
+TexGend(coord, pname, param)
+       return          void
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           param           Float64 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      115
+       wglflags        small-data
+       offset          188
+
+TexGendv(coord, pname, params)
+       return          void
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          Float64 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      116
+       wglflags        small-data
+       offset          189
+
+TexGenf(coord, pname, param)
+       return          void
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           param           CheckedFloat32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      117
+       wglflags        small-data
+       offset          190
+
+TexGenfv(coord, pname, params)
+       return          void
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      118
+       wglflags        small-data
+       offset          191
+
+TexGeni(coord, pname, param)
+       return          void
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           param           CheckedInt32 in value
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      119
+       wglflags        small-data
+       offset          192
+
+TexGeniv(coord, pname, params)
+       return          void
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: drawing-control
+       version         1.0
+       deprecated      3.1
+       glxropcode      120
+       wglflags        small-data
+       offset          193
+
+# feedback commands
+
+FeedbackBuffer(size, type, buffer)
+       return          void
+       param           size            SizeI in value
+       param           type            FeedbackType in value
+       param           buffer          FeedbackElement out array [size] retained
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        VERSION_1_0_DEPRECATED     # old: feedback
+       version         1.0
+       deprecated      3.1
+       glxsingle       105
+       wglflags        client-handcode server-handcode batchable
+       offset          194
+
+SelectBuffer(size, buffer)
+       return          void
+       param           size            SizeI in value
+       param           buffer          SelectName out array [size] retained
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        VERSION_1_0_DEPRECATED     # old: feedback
+       version         1.0
+       deprecated      3.1
+       glxsingle       106
+       wglflags        client-handcode server-handcode batchable
+       offset          195
+
+RenderMode(mode)
+       return          Int32
+       param           mode            RenderingMode in value
+       category        VERSION_1_0_DEPRECATED     # old: feedback
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.0
+       deprecated      3.1
+       glxsingle       107
+       wglflags        client-handcode server-handcode
+       offset          196
+
+InitNames()
+       return          void
+       category        VERSION_1_0_DEPRECATED     # old: feedback
+       version         1.0
+       deprecated      3.1
+       glxropcode      121
+       offset          197
+
+LoadName(name)
+       return          void
+       param           name            SelectName in value
+       category        VERSION_1_0_DEPRECATED     # old: feedback
+       version         1.0
+       deprecated      3.1
+       glxropcode      122
+       offset          198
+
+PassThrough(token)
+       return          void
+       param           token           FeedbackElement in value
+       category        VERSION_1_0_DEPRECATED     # old: feedback
+       version         1.0
+       deprecated      3.1
+       glxropcode      123
+       offset          199
+
+PopName()
+       return          void
+       category        VERSION_1_0_DEPRECATED     # old: feedback
+       version         1.0
+       deprecated      3.1
+       glxropcode      124
+       offset          200
+
+PushName(name)
+       return          void
+       param           name            SelectName in value
+       category        VERSION_1_0_DEPRECATED     # old: feedback
+       version         1.0
+       deprecated      3.1
+       glxropcode      125
+       offset          201
+
+ClearAccum(red, green, blue, alpha)
+       return          void
+       param           red             Float32 in value
+       param           green           Float32 in value
+       param           blue            Float32 in value
+       param           alpha           Float32 in value
+       category        VERSION_1_0_DEPRECATED     # old: framebuf
+       version         1.0
+       deprecated      3.1
+       glxropcode      128
+       offset          204
+
+ClearIndex(c)
+       return          void
+       param           c               MaskedColorIndexValueF in value
+       category        VERSION_1_0_DEPRECATED     # old: framebuf
+       version         1.0
+       deprecated      3.1
+       glxropcode      129
+       offset          205
+
+IndexMask(mask)
+       return          void
+       param           mask            MaskedColorIndexValueI in value
+       category        VERSION_1_0_DEPRECATED     # old: framebuf
+       version         1.0
+       deprecated      3.1
+       glxropcode      136
+       offset          212
+
+Accum(op, value)
+       return          void
+       param           op              AccumOp in value
+       param           value           CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: misc
+       version         1.0
+       deprecated      3.1
+       glxropcode      137
+       offset          213
+
+PopAttrib()
+       return          void
+       category        VERSION_1_0_DEPRECATED     # old: misc
+       version         1.0
+       deprecated      3.1
+       glxropcode      141
+       offset          218
+
+PushAttrib(mask)
+       return          void
+       param           mask            AttribMask in value
+       category        VERSION_1_0_DEPRECATED     # old: misc
+       version         1.0
+       deprecated      3.1
+       glxropcode      142
+       offset          219
+
+# modeling commands
+
+Map1d(target, u1, u2, stride, order, points)
+       return          void
+       param           target          MapTarget in value
+       param           u1              CoordD in value
+       param           u2              CoordD in value
+       param           stride          Int32 in value
+       param           order           CheckedInt32 in value
+       param           points          CoordD in array [COMPSIZE(target/stride/order)]
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       dlflags         handcode
+       glxflags        client-handcode server-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      143
+       wglflags        client-handcode server-handcode
+       offset          220
+
+Map1f(target, u1, u2, stride, order, points)
+       return          void
+       param           target          MapTarget in value
+       param           u1              CoordF in value
+       param           u2              CoordF in value
+       param           stride          Int32 in value
+       param           order           CheckedInt32 in value
+       param           points          CoordF in array [COMPSIZE(target/stride/order)]
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       dlflags         handcode
+       glxflags        client-handcode server-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      144
+       wglflags        client-handcode server-handcode
+       offset          221
+
+Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points)
+       return          void
+       param           target          MapTarget in value
+       param           u1              CoordD in value
+       param           u2              CoordD in value
+       param           ustride         Int32 in value
+       param           uorder          CheckedInt32 in value
+       param           v1              CoordD in value
+       param           v2              CoordD in value
+       param           vstride         Int32 in value
+       param           vorder          CheckedInt32 in value
+       param           points          CoordD in array [COMPSIZE(target/ustride/uorder/vstride/vorder)]
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       dlflags         handcode
+       glxflags        client-handcode server-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      145
+       wglflags        client-handcode server-handcode
+       offset          222
+
+Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points)
+       return          void
+       param           target          MapTarget in value
+       param           u1              CoordF in value
+       param           u2              CoordF in value
+       param           ustride         Int32 in value
+       param           uorder          CheckedInt32 in value
+       param           v1              CoordF in value
+       param           v2              CoordF in value
+       param           vstride         Int32 in value
+       param           vorder          CheckedInt32 in value
+       param           points          CoordF in array [COMPSIZE(target/ustride/uorder/vstride/vorder)]
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       dlflags         handcode
+       glxflags        client-handcode server-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      146
+       wglflags        client-handcode server-handcode
+       offset          223
+
+MapGrid1d(un, u1, u2)
+       return          void
+       param           un              Int32 in value
+       param           u1              CoordD in value
+       param           u2              CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      147
+       offset          224
+
+MapGrid1f(un, u1, u2)
+       return          void
+       param           un              Int32 in value
+       param           u1              CoordF in value
+       param           u2              CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      148
+       offset          225
+
+MapGrid2d(un, u1, u2, vn, v1, v2)
+       return          void
+       param           un              Int32 in value
+       param           u1              CoordD in value
+       param           u2              CoordD in value
+       param           vn              Int32 in value
+       param           v1              CoordD in value
+       param           v2              CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      149
+       offset          226
+
+MapGrid2f(un, u1, u2, vn, v1, v2)
+       return          void
+       param           un              Int32 in value
+       param           u1              CoordF in value
+       param           u2              CoordF in value
+       param           vn              Int32 in value
+       param           v1              CoordF in value
+       param           v2              CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      150
+       offset          227
+
+EvalCoord1d(u)
+       return          void
+       param           u               CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       vectorequiv     EvalCoord1dv
+       version         1.0
+       deprecated      3.1
+       offset          228
+
+EvalCoord1dv(u)
+       return          void
+       param           u               CoordD in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      151
+       offset          229
+
+EvalCoord1f(u)
+       return          void
+       param           u               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       vectorequiv     EvalCoord1fv
+       version         1.0
+       deprecated      3.1
+       offset          230
+
+EvalCoord1fv(u)
+       return          void
+       param           u               CoordF in array [1]
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      152
+       offset          231
+
+EvalCoord2d(u, v)
+       return          void
+       param           u               CoordD in value
+       param           v               CoordD in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       vectorequiv     EvalCoord2dv
+       version         1.0
+       deprecated      3.1
+       offset          232
+
+EvalCoord2dv(u)
+       return          void
+       param           u               CoordD in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      153
+       offset          233
+
+EvalCoord2f(u, v)
+       return          void
+       param           u               CoordF in value
+       param           v               CoordF in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       vectorequiv     EvalCoord2fv
+       version         1.0
+       deprecated      3.1
+       offset          234
+
+EvalCoord2fv(u)
+       return          void
+       param           u               CoordF in array [2]
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      154
+       offset          235
+
+EvalMesh1(mode, i1, i2)
+       return          void
+       param           mode            MeshMode1 in value
+       param           i1              CheckedInt32 in value
+       param           i2              CheckedInt32 in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      155
+       offset          236
+
+EvalPoint1(i)
+       return          void
+       param           i               Int32 in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      156
+       offset          237
+
+EvalMesh2(mode, i1, i2, j1, j2)
+       return          void
+       param           mode            MeshMode2 in value
+       param           i1              CheckedInt32 in value
+       param           i2              CheckedInt32 in value
+       param           j1              CheckedInt32 in value
+       param           j2              CheckedInt32 in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      157
+       offset          238
+
+EvalPoint2(i, j)
+       return          void
+       param           i               CheckedInt32 in value
+       param           j               CheckedInt32 in value
+       category        VERSION_1_0_DEPRECATED     # old: modeling
+       version         1.0
+       deprecated      3.1
+       glxropcode      158
+       offset          239
+
+AlphaFunc(func, ref)
+       return          void
+       param           func            AlphaFunction in value
+       param           ref             ClampedFloat32 in value
+       category        VERSION_1_0_DEPRECATED     # old: pixel-op
+       version         1.0
+       deprecated      3.1
+       glxropcode      159
+       offset          240
+
+PixelZoom(xfactor, yfactor)
+       return          void
+       param           xfactor         Float32 in value
+       param           yfactor         Float32 in value
+       category        VERSION_1_0_DEPRECATED     # old: pixel-rw
+       version         1.0
+       deprecated      3.1
+       glxropcode      165
+       offset          246
+
+PixelTransferf(pname, param)
+       return          void
+       param           pname           PixelTransferParameter in value
+       param           param           CheckedFloat32 in value
+       category        VERSION_1_0_DEPRECATED     # old: pixel-rw
+       version         1.0
+       deprecated      3.1
+       glxropcode      166
+       offset          247
+
+PixelTransferi(pname, param)
+       return          void
+       param           pname           PixelTransferParameter in value
+       param           param           CheckedInt32 in value
+       category        VERSION_1_0_DEPRECATED     # old: pixel-rw
+       version         1.0
+       deprecated      3.1
+       glxropcode      167
+       offset          248
+
+PixelMapfv(map, mapsize, values)
+       return          void
+       param           map             PixelMap in value
+       param           mapsize         CheckedInt32 in value
+       param           values          Float32 in array [mapsize]
+       category        VERSION_1_0_DEPRECATED     # old: pixel-rw
+       glxflags        client-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      168
+       offset          251
+
+PixelMapuiv(map, mapsize, values)
+       return          void
+       param           map             PixelMap in value
+       param           mapsize         CheckedInt32 in value
+       param           values          UInt32 in array [mapsize]
+       category        VERSION_1_0_DEPRECATED     # old: pixel-rw
+       glxflags        client-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      169
+       offset          252
+
+PixelMapusv(map, mapsize, values)
+       return          void
+       param           map             PixelMap in value
+       param           mapsize         CheckedInt32 in value
+       param           values          UInt16 in array [mapsize]
+       category        VERSION_1_0_DEPRECATED     # old: pixel-rw
+       glxflags        client-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      170
+       offset          253
+
+CopyPixels(x, y, width, height, type)
+       return          void
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           type            PixelCopyType in value
+       category        VERSION_1_0_DEPRECATED     # old: pixel-rw
+       version         1.0
+       deprecated      3.1
+       glxropcode      172
+       offset          255
+
+DrawPixels(width, height, format, type, pixels)
+       return          void
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height)]
+       category        VERSION_1_0_DEPRECATED     # old: pixel-rw
+       dlflags         handcode
+       glxflags        client-handcode server-handcode
+       version         1.0
+       deprecated      3.1
+       glxropcode      173
+       wglflags        client-handcode server-handcode
+       offset          257
+
+GetClipPlane(plane, equation)
+       return          void
+       param           plane           ClipPlaneName in value
+       param           equation        Float64 out array [4]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       113
+       glxflags        client-handcode server-handcode
+       offset          259
+
+GetLightfv(light, pname, params)
+       return          void
+       param           light           LightName in value
+       param           pname           LightParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       118
+       wglflags        small-data
+       offset          264
+
+GetLightiv(light, pname, params)
+       return          void
+       param           light           LightName in value
+       param           pname           LightParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       119
+       wglflags        small-data
+       offset          265
+
+GetMapdv(target, query, v)
+       return          void
+       param           target          MapTarget in value
+       param           query           GetMapQuery in value
+       param           v               Float64 out array [COMPSIZE(target/query)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       120
+       offset          266
+
+GetMapfv(target, query, v)
+       return          void
+       param           target          MapTarget in value
+       param           query           GetMapQuery in value
+       param           v               Float32 out array [COMPSIZE(target/query)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       121
+       offset          267
+
+GetMapiv(target, query, v)
+       return          void
+       param           target          MapTarget in value
+       param           query           GetMapQuery in value
+       param           v               Int32 out array [COMPSIZE(target/query)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       122
+       offset          268
+
+GetMaterialfv(face, pname, params)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       123
+       wglflags        small-data
+       offset          269
+
+GetMaterialiv(face, pname, params)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       124
+       wglflags        small-data
+       offset          270
+
+GetPixelMapfv(map, values)
+       return          void
+       param           map             PixelMap in value
+       param           values          Float32 out array [COMPSIZE(map)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       125
+       offset          271
+
+GetPixelMapuiv(map, values)
+       return          void
+       param           map             PixelMap in value
+       param           values          UInt32 out array [COMPSIZE(map)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       126
+       offset          272
+
+GetPixelMapusv(map, values)
+       return          void
+       param           map             PixelMap in value
+       param           values          UInt16 out array [COMPSIZE(map)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       127
+       offset          273
+
+GetPolygonStipple(mask)
+       return          void
+       param           mask            UInt8 out array [COMPSIZE()]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.0
+       deprecated      3.1
+       glxsingle       128
+       wglflags        client-handcode server-handcode
+       offset          274
+
+GetTexEnvfv(target, pname, params)
+       return          void
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       130
+       wglflags        small-data
+       offset          276
+
+GetTexEnviv(target, pname, params)
+       return          void
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       131
+       wglflags        small-data
+       offset          277
+
+GetTexGendv(coord, pname, params)
+       return          void
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          Float64 out array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       132
+       wglflags        small-data
+       offset          278
+
+GetTexGenfv(coord, pname, params)
+       return          void
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       133
+       wglflags        small-data
+       offset          279
+
+GetTexGeniv(coord, pname, params)
+       return          void
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       134
+       wglflags        small-data
+       offset          280
+
+IsList(list)
+       return          Boolean
+       param           list            List in value
+       category        VERSION_1_0_DEPRECATED     # old: state-req
+       dlflags         notlistable
+       version         1.0
+       deprecated      3.1
+       glxsingle       141
+       offset          287
+
+Frustum(left, right, bottom, top, zNear, zFar)
+       return          void
+       param           left            Float64 in value
+       param           right           Float64 in value
+       param           bottom          Float64 in value
+       param           top             Float64 in value
+       param           zNear           Float64 in value
+       param           zFar            Float64 in value
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      175
+       offset          289
+
+LoadIdentity()
+       return          void
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      176
+       offset          290
+
+LoadMatrixf(m)
+       return          void
+       param           m               Float32 in array [16]
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      177
+       offset          291
+
+LoadMatrixd(m)
+       return          void
+       param           m               Float64 in array [16]
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      178
+       offset          292
+
+MatrixMode(mode)
+       return          void
+       param           mode            MatrixMode in value
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      179
+       offset          293
+
+MultMatrixf(m)
+       return          void
+       param           m               Float32 in array [16]
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      180
+       offset          294
+
+MultMatrixd(m)
+       return          void
+       param           m               Float64 in array [16]
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      181
+       offset          295
+
+Ortho(left, right, bottom, top, zNear, zFar)
+       return          void
+       param           left            Float64 in value
+       param           right           Float64 in value
+       param           bottom          Float64 in value
+       param           top             Float64 in value
+       param           zNear           Float64 in value
+       param           zFar            Float64 in value
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      182
+       offset          296
+
+PopMatrix()
+       return          void
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      183
+       offset          297
+
+PushMatrix()
+       return          void
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      184
+       offset          298
+
+Rotated(angle, x, y, z)
+       return          void
+       param           angle           Float64 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      185
+       offset          299
+
+Rotatef(angle, x, y, z)
+       return          void
+       param           angle           Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      186
+       offset          300
+
+Scaled(x, y, z)
+       return          void
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      187
+       offset          301
+
+Scalef(x, y, z)
+       return          void
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      188
+       offset          302
+
+Translated(x, y, z)
+       return          void
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      189
+       offset          303
+
+Translatef(x, y, z)
+       return          void
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        VERSION_1_0_DEPRECATED     # old: xform
+       version         1.0
+       deprecated      3.1
+       glxropcode      190
+       offset          304
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.1 commands
+#
+###############################################################################
+###############################################################################
+
+DrawArrays(mode, first, count)
+       return          void
+       param           mode            BeginMode in value
+       param           first           Int32 in value
+       param           count           SizeI in value
+       category        VERSION_1_1
+       dlflags         handcode
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       glxropcode      193
+       offset          310
+
+DrawElements(mode, count, type, indices)
+       return          void
+       param           mode            BeginMode in value
+       param           count           SizeI in value
+       param           type            DrawElementsType in value
+       param           indices         Void in array [COMPSIZE(count/type)]
+       category        VERSION_1_1
+       dlflags         handcode
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       offset          311
+
+GetPointerv(pname, params)
+       return          void
+       param           pname           GetPointervPName in value
+       param           params          VoidPointer out array [1]
+       category        VERSION_1_1
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       offset          329
+
+PolygonOffset(factor, units)
+       return          void
+       param           factor          Float32 in value
+       param           units           Float32 in value
+       category        VERSION_1_1
+       version         1.1
+       glxropcode      192
+       offset          319
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CopyTexImage1D(target, level, internalformat, x, y, width, border)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       category        VERSION_1_1
+       version         1.1
+       glxropcode      4119
+       glxflags        EXT
+       offset          323
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CopyTexImage2D(target, level, internalformat, x, y, width, height, border)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       category        VERSION_1_1
+       version         1.1
+       glxropcode      4120
+       glxflags        EXT
+       offset          324
+
+CopyTexSubImage1D(target, level, xoffset, x, y, width)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       category        VERSION_1_1
+       version         1.1
+       glxropcode      4121
+       glxflags        EXT
+       offset          325
+
+CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        VERSION_1_1
+       version         1.1
+       glxropcode      4122
+       glxflags        EXT
+       offset          326
+
+TexSubImage1D(target, level, xoffset, width, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width)]
+       category        VERSION_1_1
+       dlflags         handcode
+       glxflags        EXT client-handcode server-handcode
+       version         1.1
+       glxropcode      4099
+       offset          332
+
+TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height)]
+       category        VERSION_1_1
+       dlflags         handcode
+       glxflags        EXT client-handcode server-handcode
+       version         1.1
+       glxropcode      4100
+       offset          333
+
+BindTexture(target, texture)
+       return          void
+       param           target          TextureTarget in value
+       param           texture         Texture in value
+       category        VERSION_1_1
+       version         1.1
+       glxropcode      4117
+       glxflags        EXT
+       offset          307
+
+DeleteTextures(n, textures)
+       return          void
+       param           n               SizeI in value
+       param           textures        Texture in array [n]
+       category        VERSION_1_1
+       dlflags         notlistable
+       version         1.1
+       glxsingle       144
+       offset          327
+
+GenTextures(n, textures)
+       return          void
+       param           n               SizeI in value
+       param           textures        Texture out array [n]
+       category        VERSION_1_1
+       dlflags         notlistable
+       version         1.1
+       glxsingle       145
+       offset          328
+
+IsTexture(texture)
+       return          Boolean
+       param           texture         Texture in value
+       category        VERSION_1_1
+       dlflags         notlistable
+       version         1.1
+       glxsingle       146
+       offset          330
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.1 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+ArrayElement(i)
+       return          void
+       param           i               Int32 in value
+       category        VERSION_1_1_DEPRECATED
+       dlflags         handcode
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       deprecated      3.1
+       offset          306
+
+ColorPointer(size, type, stride, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            ColorPointerType in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride)] retained
+       category        VERSION_1_1_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       deprecated      3.1
+       offset          308
+
+DisableClientState(array)
+       return          void
+       param           array           EnableCap in value
+       category        VERSION_1_1_DEPRECATED
+       version         1.1
+       deprecated      3.1
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       offset          309
+
+EdgeFlagPointer(stride, pointer)
+       return          void
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(stride)] retained
+       category        VERSION_1_1_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       deprecated      3.1
+       offset          312
+
+EnableClientState(array)
+       return          void
+       param           array           EnableCap in value
+       category        VERSION_1_1_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       deprecated      3.1
+       offset          313
+
+IndexPointer(type, stride, pointer)
+       return          void
+       param           type            IndexPointerType in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride)] retained
+       category        VERSION_1_1_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       deprecated      3.1
+       offset          314
+
+InterleavedArrays(format, stride, pointer)
+       return          void
+       param           format          InterleavedArrayFormat in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(format/stride)] retained
+       category        VERSION_1_1_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       deprecated      3.1
+       offset          317
+
+NormalPointer(type, stride, pointer)
+       return          void
+       param           type            NormalPointerType in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride)] retained
+       category        VERSION_1_1_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       deprecated      3.1
+       offset          318
+
+TexCoordPointer(size, type, stride, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            TexCoordPointerType in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride)] retained
+       category        VERSION_1_1_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       deprecated      3.1
+       offset          320
+
+VertexPointer(size, type, stride, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            VertexPointerType in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride)] retained
+       category        VERSION_1_1_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       deprecated      3.1
+       offset          321
+
+AreTexturesResident(n, textures, residences)
+       return          Boolean
+       param           n               SizeI in value
+       param           textures        Texture in array [n]
+       param           residences      Boolean out array [n]
+       category        VERSION_1_1_DEPRECATED
+       glxsingle       143
+       dlflags         notlistable
+       version         1.1
+       deprecated      3.1
+       offset          322
+
+PrioritizeTextures(n, textures, priorities)
+       return          void
+       param           n               SizeI in value
+       param           textures        Texture in array [n]
+       param           priorities      ClampedFloat32 in array [n]
+       category        VERSION_1_1_DEPRECATED
+       version         1.1
+       deprecated      3.1
+       glxropcode      4118
+       glxflags        EXT
+       offset          331
+
+Indexub(c)
+       return          void
+       param           c               ColorIndexValueUB in value
+       category        VERSION_1_1_DEPRECATED
+       vectorequiv     Indexubv
+       version         1.1
+       offset          315
+
+Indexubv(c)
+       return          void
+       param           c               ColorIndexValueUB in array [1]
+       category        VERSION_1_1_DEPRECATED
+       version         1.1
+       glxropcode      194
+       offset          316
+
+PopClientAttrib()
+       return          void
+       category        VERSION_1_1_DEPRECATED
+       version         1.1
+       deprecated      3.1
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       offset          334
+
+PushClientAttrib(mask)
+       return          void
+       param           mask            ClientAttribMask in value
+       category        VERSION_1_1_DEPRECATED
+       version         1.1
+       deprecated      3.1
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       offset          335
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.2 commands
+#
+###############################################################################
+###############################################################################
+
+BlendColor(red, green, blue, alpha)
+       return          void
+       param           red             ClampedColorF in value
+       param           green           ClampedColorF in value
+       param           blue            ClampedColorF in value
+       param           alpha           ClampedColorF in value
+       category        VERSION_1_2
+       glxflags        EXT
+       version         1.2
+       glxropcode      4096
+       offset          336
+
+BlendEquation(mode)
+       return          void
+       param           mode            BlendEquationMode in value
+       category        VERSION_1_2
+       glxflags        EXT
+       version         1.2
+       glxropcode      4097
+       offset          337
+
+DrawRangeElements(mode, start, end, count, type, indices)
+       return          void
+       param           mode            BeginMode in value
+       param           start           UInt32 in value
+       param           end             UInt32 in value
+       param           count           SizeI in value
+       param           type            DrawElementsType in value
+       param           indices         Void in array [COMPSIZE(count/type)]
+       category        VERSION_1_2
+       dlflags         handcode
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.2
+       offset          338
+
+# OpenGL 1.2 (EXT_texture3D) commands
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureComponentCount in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height/depth)]
+       category        VERSION_1_2
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4114
+       offset          371
+
+TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height/depth)]
+       category        VERSION_1_2
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.2
+       glxropcode      4115
+       offset          372
+
+# OpenGL 1.2 (EXT_copy_texture) commands (specific to texture3D)
+
+CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        VERSION_1_2
+       glxflags        EXT
+       version         1.2
+       glxropcode      4123
+       offset          373
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.2 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 1.2 (SGI_color_table) commands
+
+ColorTable(target, internalformat, width, format, type, table)
+       return          void
+       param           target          ColorTableTarget in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           table           Void in array [COMPSIZE(format/type/width)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      2053
+       offset          339
+
+ColorTableParameterfv(target, pname, params)
+       return          void
+       param           target          ColorTableTarget in value
+       param           pname           ColorTableParameterPName in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      2054
+       offset          340
+
+ColorTableParameteriv(target, pname, params)
+       return          void
+       param           target          ColorTableTarget in value
+       param           pname           ColorTableParameterPName in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      2055
+       offset          341
+
+CopyColorTable(target, internalformat, x, y, width)
+       return          void
+       param           target          ColorTableTarget in value
+       param           internalformat  PixelInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      2056
+       offset          342
+
+GetColorTable(target, format, type, table)
+       return          void
+       param           target          ColorTableTarget in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           table           Void out array [COMPSIZE(target/format/type)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.2
+       deprecated      3.1
+       glxsingle       147
+       offset          343
+
+GetColorTableParameterfv(target, pname, params)
+       return          void
+       param           target          ColorTableTarget in value
+       param           pname           GetColorTableParameterPName in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       version         1.2
+       deprecated      3.1
+       glxsingle       148
+       offset          344
+
+GetColorTableParameteriv(target, pname, params)
+       return          void
+       param           target          ColorTableTarget in value
+       param           pname           GetColorTableParameterPName in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       version         1.2
+       deprecated      3.1
+       glxsingle       149
+       offset          345
+
+# OpenGL 1.2 (EXT_color_subtable) commands
+
+ColorSubTable(target, start, count, format, type, data)
+       return          void
+       param           target          ColorTableTarget in value
+       param           start           SizeI in value
+       param           count           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           data            Void in array [COMPSIZE(format/type/count)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         handcode
+       glxflags        client-handcode server-handcode
+       version         1.2
+       deprecated      3.1
+       glxropcode      195
+       offset          346
+
+CopyColorSubTable(target, start, x, y, width)
+       return          void
+       param           target          ColorTableTarget in value
+       param           start           SizeI in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       category        VERSION_1_2_DEPRECATED
+       version         1.2
+       deprecated      3.1
+       glxropcode      196
+       offset          347
+
+# OpenGL 1.2 (EXT_convolution) commands
+
+ConvolutionFilter1D(target, internalformat, width, format, type, image)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           image           Void in array [COMPSIZE(format/type/width)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4101
+       offset          348
+
+ConvolutionFilter2D(target, internalformat, width, height, format, type, image)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           image           Void in array [COMPSIZE(format/type/width/height)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4102
+       offset          349
+
+ConvolutionParameterf(target, pname, params)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           pname           ConvolutionParameter in value
+       param           params          CheckedFloat32 in value
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4103
+       offset          350
+
+ConvolutionParameterfv(target, pname, params)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           pname           ConvolutionParameter in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4104
+       offset          351
+
+ConvolutionParameteri(target, pname, params)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           pname           ConvolutionParameter in value
+       param           params          CheckedInt32 in value
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4105
+       offset          352
+
+ConvolutionParameteriv(target, pname, params)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           pname           ConvolutionParameter in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4106
+       offset          353
+
+CopyConvolutionFilter1D(target, internalformat, x, y, width)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           internalformat  PixelInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4107
+       offset          354
+
+CopyConvolutionFilter2D(target, internalformat, x, y, width, height)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           internalformat  PixelInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4108
+       offset          355
+
+GetConvolutionFilter(target, format, type, image)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           image           Void out array [COMPSIZE(target/format/type)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.2
+       deprecated      3.1
+       glxsingle       150
+       offset          356
+
+GetConvolutionParameterfv(target, pname, params)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           pname           GetConvolutionParameterPName in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       version         1.2
+       deprecated      3.1
+       glxsingle       151
+       offset          357
+
+GetConvolutionParameteriv(target, pname, params)
+       return          void
+       param           target          ConvolutionTarget in value
+       param           pname           GetConvolutionParameterPName in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       version         1.2
+       deprecated      3.1
+       glxsingle       152
+       offset          358
+
+GetSeparableFilter(target, format, type, row, column, span)
+       return          void
+       param           target          SeparableTarget in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           row             Void out array [COMPSIZE(target/format/type)]
+       param           column          Void out array [COMPSIZE(target/format/type)]
+       param           span            Void out array [COMPSIZE(target/format/type)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.2
+       deprecated      3.1
+       glxsingle       153
+       offset          359
+
+SeparableFilter2D(target, internalformat, width, height, format, type, row, column)
+       return          void
+       param           target          SeparableTarget in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           row             Void in array [COMPSIZE(target/format/type/width)]
+       param           column          Void in array [COMPSIZE(target/format/type/height)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4109
+       offset          360
+
+# OpenGL 1.2 (EXT_histogram) commands
+
+GetHistogram(target, reset, format, type, values)
+       return          void
+       param           target          HistogramTarget in value
+       param           reset           Boolean in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           values          Void out array [COMPSIZE(target/format/type)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.2
+       deprecated      3.1
+       glxsingle       154
+       offset          361
+
+GetHistogramParameterfv(target, pname, params)
+       return          void
+       param           target          HistogramTarget in value
+       param           pname           GetHistogramParameterPName in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       version         1.2
+       deprecated      3.1
+       glxsingle       155
+       offset          362
+
+GetHistogramParameteriv(target, pname, params)
+       return          void
+       param           target          HistogramTarget in value
+       param           pname           GetHistogramParameterPName in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       version         1.2
+       deprecated      3.1
+       glxsingle       156
+       offset          363
+
+GetMinmax(target, reset, format, type, values)
+       return          void
+       param           target          MinmaxTarget in value
+       param           reset           Boolean in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           values          Void out array [COMPSIZE(target/format/type)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.2
+       deprecated      3.1
+       glxsingle       157
+       offset          364
+
+GetMinmaxParameterfv(target, pname, params)
+       return          void
+       param           target          MinmaxTarget in value
+       param           pname           GetMinmaxParameterPName in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       version         1.2
+       deprecated      3.1
+       glxsingle       158
+       offset          365
+
+GetMinmaxParameteriv(target, pname, params)
+       return          void
+       param           target          MinmaxTarget in value
+       param           pname           GetMinmaxParameterPName in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_2_DEPRECATED
+       dlflags         notlistable
+       version         1.2
+       deprecated      3.1
+       glxsingle       159
+       offset          366
+
+Histogram(target, width, internalformat, sink)
+       return          void
+       param           target          HistogramTarget in value
+       param           width           SizeI in value
+       param           internalformat  PixelInternalFormat in value
+       param           sink            Boolean in value
+       category        VERSION_1_2_DEPRECATED
+       dlflags         handcode
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4110
+       offset          367
+
+Minmax(target, internalformat, sink)
+       return          void
+       param           target          MinmaxTarget in value
+       param           internalformat  PixelInternalFormat in value
+       param           sink            Boolean in value
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4111
+       offset          368
+
+ResetHistogram(target)
+       return          void
+       param           target          HistogramTarget in value
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4112
+       offset          369
+
+ResetMinmax(target)
+       return          void
+       param           target          MinmaxTarget in value
+       category        VERSION_1_2_DEPRECATED
+       glxflags        EXT
+       version         1.2
+       deprecated      3.1
+       glxropcode      4113
+       offset          370
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.3 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 1.3 (ARB_multitexture) commands
+
+ActiveTexture(texture)
+       return          void
+       param           texture         TextureUnit in value
+       category        VERSION_1_3
+       glxflags        ARB
+       version         1.3
+       glxropcode      197
+       offset          374
+
+# OpenGL 1.3 (ARB_multisample) commands
+
+SampleCoverage(value, invert)
+       return          void
+       param           value           ClampedFloat32 in value
+       param           invert          Boolean in value
+       category        VERSION_1_3
+       glxflags        ARB
+       version         1.3
+       glxropcode      229
+       offset          412
+
+# OpenGL 1.3 (ARB_texture_compression) commands
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        VERSION_1_3
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.3
+       glxropcode      216
+       wglflags        client-handcode server-handcode
+       offset          554
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        VERSION_1_3
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.3
+       glxropcode      215
+       wglflags        client-handcode server-handcode
+       offset          555
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        VERSION_1_3
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.3
+       glxropcode      214
+       wglflags        client-handcode server-handcode
+       offset          556
+
+CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        VERSION_1_3
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.3
+       glxropcode      219
+       wglflags        client-handcode server-handcode
+       offset          557
+
+CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        VERSION_1_3
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.3
+       glxropcode      218
+       wglflags        client-handcode server-handcode
+       offset          558
+
+CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        VERSION_1_3
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.3
+       glxropcode      217
+       wglflags        client-handcode server-handcode
+       offset          559
+
+GetCompressedTexImage(target, level, img)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           img             CompressedTextureARB out array [COMPSIZE(target/level)]
+       category        VERSION_1_3
+       dlflags         notlistable
+       glxflags        ARB client-handcode server-handcode
+       version         1.3
+       glxsingle       160
+       wglflags        client-handcode server-handcode
+       offset          560
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.3 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+ClientActiveTexture(texture)
+       return          void
+       param           texture         TextureUnit in value
+       category        VERSION_1_3_DEPRECATED
+       dlflags         notlistable
+       glxflags        ARB client-handcode client-intercept server-handcode
+       version         1.3
+       deprecated      3.1
+       offset          375
+
+MultiTexCoord1d(target, s)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordD in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord1dv
+       offset          376
+
+MultiTexCoord1dv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordD in array [1]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      198
+       offset          377
+
+MultiTexCoord1f(target, s)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordF in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord1fv
+       offset          378
+
+MultiTexCoord1fv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordF in array [1]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      199
+       offset          379
+
+MultiTexCoord1i(target, s)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordI in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord1iv
+       offset          380
+
+MultiTexCoord1iv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordI in array [1]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      200
+       offset          381
+
+MultiTexCoord1s(target, s)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordS in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord1sv
+       offset          382
+
+MultiTexCoord1sv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordS in array [1]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      201
+       offset          383
+
+MultiTexCoord2d(target, s, t)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordD in value
+       param           t               CoordD in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord2dv
+       offset          384
+
+MultiTexCoord2dv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordD in array [2]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      202
+       offset          385
+
+MultiTexCoord2f(target, s, t)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordF in value
+       param           t               CoordF in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord2fv
+       offset          386
+
+MultiTexCoord2fv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordF in array [2]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      203
+       offset          387
+
+MultiTexCoord2i(target, s, t)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordI in value
+       param           t               CoordI in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord2iv
+       offset          388
+
+MultiTexCoord2iv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordI in array [2]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      204
+       offset          389
+
+MultiTexCoord2s(target, s, t)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordS in value
+       param           t               CoordS in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord2sv
+       offset          390
+
+MultiTexCoord2sv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordS in array [2]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      205
+       offset          391
+
+MultiTexCoord3d(target, s, t, r)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordD in value
+       param           t               CoordD in value
+       param           r               CoordD in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord3dv
+       offset          392
+
+MultiTexCoord3dv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordD in array [3]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      206
+       offset          393
+
+MultiTexCoord3f(target, s, t, r)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordF in value
+       param           t               CoordF in value
+       param           r               CoordF in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord3fv
+       offset          394
+
+MultiTexCoord3fv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordF in array [3]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      207
+       offset          395
+
+MultiTexCoord3i(target, s, t, r)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordI in value
+       param           t               CoordI in value
+       param           r               CoordI in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord3iv
+       offset          396
+
+MultiTexCoord3iv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordI in array [3]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      208
+       offset          397
+
+MultiTexCoord3s(target, s, t, r)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordS in value
+       param           t               CoordS in value
+       param           r               CoordS in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord3sv
+       offset          398
+
+MultiTexCoord3sv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordS in array [3]
+       category        VERSION_1_3_DEPRECATED
+       version         1.3
+       deprecated      3.1
+       glxflags        ARB
+       glxropcode      209
+       offset          399
+
+MultiTexCoord4d(target, s, t, r, q)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordD in value
+       param           t               CoordD in value
+       param           r               CoordD in value
+       param           q               CoordD in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord4dv
+       offset          400
+
+MultiTexCoord4dv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordD in array [4]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      210
+       offset          401
+
+MultiTexCoord4f(target, s, t, r, q)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordF in value
+       param           t               CoordF in value
+       param           r               CoordF in value
+       param           q               CoordF in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord4fv
+       offset          402
+
+MultiTexCoord4fv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordF in array [4]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      211
+       offset          403
+
+MultiTexCoord4i(target, s, t, r, q)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordI in value
+       param           t               CoordI in value
+       param           r               CoordI in value
+       param           q               CoordI in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord4iv
+       offset          404
+
+MultiTexCoord4iv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordI in array [4]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      212
+       offset          405
+
+MultiTexCoord4s(target, s, t, r, q)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordS in value
+       param           t               CoordS in value
+       param           r               CoordS in value
+       param           q               CoordS in value
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       vectorequiv     MultiTexCoord4sv
+       offset          406
+
+MultiTexCoord4sv(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordS in array [4]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB
+       version         1.3
+       deprecated      3.1
+       glxropcode      213
+       offset          407
+
+# OpenGL 1.3 (ARB_transpose_matrix) commands
+
+LoadTransposeMatrixf(m)
+       return          void
+       param           m               Float32 in array [16]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB client-handcode client-intercept server-handcode
+       version         1.3
+       deprecated      3.1
+       offset          408
+
+LoadTransposeMatrixd(m)
+       return          void
+       param           m               Float64 in array [16]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB client-handcode client-intercept server-handcode
+       version         1.3
+       deprecated      3.1
+       offset          409
+
+MultTransposeMatrixf(m)
+       return          void
+       param           m               Float32 in array [16]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB client-handcode client-intercept server-handcode
+       version         1.3
+       deprecated      3.1
+       offset          410
+
+MultTransposeMatrixd(m)
+       return          void
+       param           m               Float64 in array [16]
+       category        VERSION_1_3_DEPRECATED
+       glxflags        ARB client-handcode client-intercept server-handcode
+       version         1.3
+       deprecated      3.1
+       offset          411
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.4 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 1.4 (EXT_blend_func_separate) commands
+
+BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)
+       return          void
+       param           sfactorRGB      BlendFuncSeparateParameterEXT in value
+       param           dfactorRGB      BlendFuncSeparateParameterEXT in value
+       param           sfactorAlpha    BlendFuncSeparateParameterEXT in value
+       param           dfactorAlpha    BlendFuncSeparateParameterEXT in value
+       category        VERSION_1_4
+       glxropcode      4134
+       version         1.4
+       extension
+       offset          537
+
+# OpenGL 1.4 (EXT_multi_draw_arrays) commands
+
+# first and count are really 'in'
+MultiDrawArrays(mode, first, count, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           first           Int32 out array [COMPSIZE(count)]
+       param           count           SizeI out array [COMPSIZE(primcount)]
+       param           primcount       SizeI in value
+       category        VERSION_1_4
+       version         1.4
+       glxropcode      ?
+       offset          644
+
+MultiDrawElements(mode, count, type, indices, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           count           SizeI in array [COMPSIZE(primcount)]
+       param           type            DrawElementsType in value
+       param           indices         VoidPointer in array [COMPSIZE(primcount)]
+       param           primcount       SizeI in value
+       category        VERSION_1_4
+       version         1.4
+       glxropcode      ?
+       offset          645
+
+# OpenGL 1.4 (ARB_point_parameters, NV_point_sprite) commands
+
+PointParameterf(pname, param)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           param           CheckedFloat32 in value
+       category        VERSION_1_4
+       version         1.4
+       glxropcode      2065
+       extension
+       offset          458
+
+PointParameterfv(pname, params)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        VERSION_1_4
+       version         1.4
+       glxropcode      2066
+       extension
+       offset          459
+
+PointParameteri(pname, param)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           param           Int32 in value
+       category        VERSION_1_4
+       version         1.4
+       extension       soft WINSOFT NV20
+       glxropcode      4221
+       offset          642
+
+PointParameteriv(pname, params)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           params          Int32 in array [COMPSIZE(pname)]
+       category        VERSION_1_4
+       version         1.4
+       extension       soft WINSOFT NV20
+       glxropcode      4222re
+       offset          643
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.4 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 1.4 (EXT_fog_coord) commands
+
+FogCoordf(coord)
+       return          void
+       param           coord           CoordF in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     FogCoordfv
+       version         1.4
+       deprecated      3.1
+       offset          545
+
+FogCoordfv(coord)
+       return          void
+       param           coord           CoordF in array [1]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      4124
+       offset          546
+
+FogCoordd(coord)
+       return          void
+       param           coord           CoordD in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     FogCoorddv
+       version         1.4
+       deprecated      3.1
+       offset          547
+
+FogCoorddv(coord)
+       return          void
+       param           coord           CoordD in array [1]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      4125
+       offset          548
+
+FogCoordPointer(type, stride, pointer)
+       return          void
+       param           type            FogPointerTypeEXT in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride)] retained
+       category        VERSION_1_4_DEPRECATED
+       dlflags         notlistable
+       version         1.4
+       deprecated      3.1
+       glxflags        client-handcode server-handcode
+       offset          549
+
+# OpenGL 1.4 (EXT_secondary_color) commands
+
+SecondaryColor3b(red, green, blue)
+       return          void
+       param           red             ColorB in value
+       param           green           ColorB in value
+       param           blue            ColorB in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     SecondaryColor3bv
+       version         1.4
+       deprecated      3.1
+       offset          561
+
+SecondaryColor3bv(v)
+       return          void
+       param           v               ColorB in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      4126
+       offset          562
+
+SecondaryColor3d(red, green, blue)
+       return          void
+       param           red             ColorD in value
+       param           green           ColorD in value
+       param           blue            ColorD in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     SecondaryColor3dv
+       version         1.4
+       deprecated      3.1
+       offset          563
+
+SecondaryColor3dv(v)
+       return          void
+       param           v               ColorD in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      4130
+       offset          564
+
+SecondaryColor3f(red, green, blue)
+       return          void
+       param           red             ColorF in value
+       param           green           ColorF in value
+       param           blue            ColorF in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     SecondaryColor3fv
+       version         1.4
+       deprecated      3.1
+       offset          565
+
+SecondaryColor3fv(v)
+       return          void
+       param           v               ColorF in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      4129
+       offset          566
+
+SecondaryColor3i(red, green, blue)
+       return          void
+       param           red             ColorI in value
+       param           green           ColorI in value
+       param           blue            ColorI in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     SecondaryColor3iv
+       version         1.4
+       deprecated      3.1
+       offset          567
+
+SecondaryColor3iv(v)
+       return          void
+       param           v               ColorI in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      4128
+       offset          568
+
+SecondaryColor3s(red, green, blue)
+       return          void
+       param           red             ColorS in value
+       param           green           ColorS in value
+       param           blue            ColorS in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     SecondaryColor3sv
+       version         1.4
+       deprecated      3.1
+       offset          569
+
+SecondaryColor3sv(v)
+       return          void
+       param           v               ColorS in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      4127
+       offset          570
+
+SecondaryColor3ub(red, green, blue)
+       return          void
+       param           red             ColorUB in value
+       param           green           ColorUB in value
+       param           blue            ColorUB in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     SecondaryColor3ubv
+       version         1.4
+       deprecated      3.1
+       offset          571
+
+SecondaryColor3ubv(v)
+       return          void
+       param           v               ColorUB in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      4131
+       offset          572
+
+SecondaryColor3ui(red, green, blue)
+       return          void
+       param           red             ColorUI in value
+       param           green           ColorUI in value
+       param           blue            ColorUI in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     SecondaryColor3uiv
+       version         1.4
+       deprecated      3.1
+       offset          573
+
+SecondaryColor3uiv(v)
+       return          void
+       param           v               ColorUI in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      4133
+       offset          574
+
+SecondaryColor3us(red, green, blue)
+       return          void
+       param           red             ColorUS in value
+       param           green           ColorUS in value
+       param           blue            ColorUS in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     SecondaryColor3usv
+       version         1.4
+       deprecated      3.1
+       offset          575
+
+SecondaryColor3usv(v)
+       return          void
+       param           v               ColorUS in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      4132
+       offset          576
+
+SecondaryColorPointer(size, type, stride, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            ColorPointerType in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride)] retained
+       category        VERSION_1_4_DEPRECATED
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       version         1.4
+       deprecated      3.1
+       extension
+       offset          577
+
+# OpenGL 1.4 (ARB_window_pos) commands
+# Note: all WindowPos* entry points use glxropcode ropcode 230, with 3 float parameters
+
+WindowPos2d(x, y)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     WindowPos2dv
+       version         1.4
+       deprecated      3.1
+       offset          513
+
+WindowPos2dv(v)
+       return          void
+       param           v               CoordD in array [2]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       offset          514
+
+WindowPos2f(x, y)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     WindowPos2fv
+       version         1.4
+       deprecated      3.1
+       offset          515
+
+WindowPos2fv(v)
+       return          void
+       param           v               CoordF in array [2]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       offset          516
+
+WindowPos2i(x, y)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     WindowPos2iv
+       version         1.4
+       deprecated      3.1
+       offset          517
+
+WindowPos2iv(v)
+       return          void
+       param           v               CoordI in array [2]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       offset          518
+
+WindowPos2s(x, y)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     WindowPos2sv
+       version         1.4
+       deprecated      3.1
+       offset          519
+
+WindowPos2sv(v)
+       return          void
+       param           v               CoordS in array [2]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       offset          520
+
+WindowPos3d(x, y, z)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       param           z               CoordD in value
+       vectorequiv     WindowPos3dv
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       offset          521
+
+WindowPos3dv(v)
+       return          void
+       param           v               CoordD in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       offset          522
+
+WindowPos3f(x, y, z)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       param           z               CoordF in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     WindowPos3fv
+       version         1.4
+       deprecated      3.1
+       offset          523
+
+WindowPos3fv(v)
+       return          void
+       param           v               CoordF in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       offset          524
+
+WindowPos3i(x, y, z)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       param           z               CoordI in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     WindowPos3iv
+       version         1.4
+       deprecated      3.1
+       offset          525
+
+WindowPos3iv(v)
+       return          void
+       param           v               CoordI in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       offset          526
+
+WindowPos3s(x, y, z)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       param           z               CoordS in value
+       category        VERSION_1_4_DEPRECATED
+       vectorequiv     WindowPos3sv
+       version         1.4
+       deprecated      3.1
+       offset          527
+
+WindowPos3sv(v)
+       return          void
+       param           v               CoordS in array [3]
+       category        VERSION_1_4_DEPRECATED
+       version         1.4
+       deprecated      3.1
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       offset          528
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.5 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 1.5 (ARB_occlusion_query) commands
+
+GenQueries(n, ids)
+       return          void
+       param           n               SizeI in value
+       param           ids             UInt32 out array [n]
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxsingle       162
+       glxflags        ignore
+       offset          700
+
+DeleteQueries(n, ids)
+       return          void
+       param           n               SizeI in value
+       param           ids             UInt32 in array [n]
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxsingle       161
+       glxflags        ignore
+       offset          701
+
+IsQuery(id)
+       return          Boolean
+       param           id              UInt32 in value
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxsingle       163
+       glxflags        ignore
+       offset          702
+
+BeginQuery(target, id)
+       return          void
+       param           target          GLenum in value
+       param           id              UInt32 in value
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxropcode      231
+       glxflags        ignore
+       offset          703
+
+EndQuery(target)
+       return          void
+       param           target          GLenum in value
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxropcode      232
+       glxflags        ignore
+       offset          704
+
+GetQueryiv(target, pname, params)
+       return          void
+       param           target          GLenum in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [pname]
+       category        VERSION_1_5
+       dlflags         notlistable
+       version         1.5
+       extension
+       glxsingle       164
+       glxflags        ignore
+       offset          705
+
+GetQueryObjectiv(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [pname]
+       category        VERSION_1_5
+       dlflags         notlistable
+       version         1.5
+       extension
+       glxsingle       165
+       glxflags        ignore
+       offset          706
+
+GetQueryObjectuiv(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           GLenum in value
+       param           params          UInt32 out array [pname]
+       category        VERSION_1_5
+       dlflags         notlistable
+       version         1.5
+       extension
+       glxsingle       166
+       glxflags        ignore
+       offset          707
+
+# OpenGL 1.5 (ARB_vertex_buffer_object) commands
+
+BindBuffer(target, buffer)
+       return          void
+       param           target          BufferTargetARB in value
+       param           buffer          UInt32 in value
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          688
+
+DeleteBuffers(n, buffers)
+       return          void
+       param           n               SizeI in value
+       param           buffers         ConstUInt32 in array [n]
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          691
+
+GenBuffers(n, buffers)
+       return          void
+       param           n               SizeI in value
+       param           buffers         UInt32 out array [n]
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          692
+
+IsBuffer(buffer)
+       return          Boolean
+       param           buffer          UInt32 in value
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          696
+
+BufferData(target, size, data, usage)
+       return          void
+       param           target          BufferTargetARB in value
+       param           size            BufferSize in value
+       param           data            ConstVoid in array [size]
+       param           usage           BufferUsageARB in value
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          689
+
+BufferSubData(target, offset, size, data)
+       return          void
+       param           target          BufferTargetARB in value
+       param           offset          BufferOffset in value
+       param           size            BufferSize in value
+       param           data            ConstVoid in array [size]
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          690
+
+GetBufferSubData(target, offset, size, data)
+       return          void
+       param           target          BufferTargetARB in value
+       param           offset          BufferOffset in value
+       param           size            BufferSize in value
+       param           data            Void out array [size]
+       category        VERSION_1_5
+       dlflags         notlistable
+       version         1.5
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          695
+
+MapBuffer(target, access)
+       return          VoidPointer
+       param           target          BufferTargetARB in value
+       param           access          BufferAccessARB in value
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          697
+
+UnmapBuffer(target)
+       return          Boolean
+       param           target          BufferTargetARB in value
+       category        VERSION_1_5
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          698
+
+GetBufferParameteriv(target, pname, params)
+       return          void
+       param           target          BufferTargetARB in value
+       param           pname           BufferPNameARB in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_1_5
+       dlflags         notlistable
+       version         1.5
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          693
+
+GetBufferPointerv(target, pname, params)
+       return          void
+       param           target          BufferTargetARB in value
+       param           pname           BufferPointerNameARB in value
+       param           params          VoidPointer out array [1]
+       category        VERSION_1_5
+       dlflags         notlistable
+       version         1.5
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          694
+
+# OpenGL 1.5 (EXT_shadow_funcs) commands - none
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 2.0 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 2.0 (EXT_blend_equation_separate) commands
+
+BlendEquationSeparate(modeRGB, modeAlpha)
+       return          void
+       param           modeRGB         BlendEquationModeEXT in value
+       param           modeAlpha       BlendEquationModeEXT in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      4228
+
+# OpenGL 2.0 (ARB_draw_buffers) commands
+
+DrawBuffers(n, bufs)
+       return          void
+       param           n               SizeI in value
+       param           bufs            DrawBufferModeATI in array [n]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      233
+       glxflags        ignore
+       offset          ?
+
+# OpenGL 2.0 (ARB_stencil_two_side) commands
+
+StencilOpSeparate(face, sfail, dpfail, dppass)
+       return          void
+       param           face            StencilFaceDirection in value
+       param           sfail           StencilOp in value
+       param           dpfail          StencilOp in value
+       param           dppass          StencilOp in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+StencilFuncSeparate(frontfunc, backfunc, ref, mask)
+       return          void
+       param           frontfunc       StencilFunction in value
+       param           backfunc        StencilFunction in value
+       param           ref             ClampedStencilValue in value
+       param           mask            MaskedStencilValue in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+StencilMaskSeparate(face, mask)
+       return          void
+       param           face            StencilFaceDirection in value
+       param           mask            MaskedStencilValue in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+# OpenGL 2.0 (ARB_shader_objects / ARB_vertex_shader / ARB_fragment_shader) commands
+
+AttachShader(program, shader)
+       return          void
+       param           program         UInt32 in value
+       param           shader          UInt32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindAttribLocation(program, index, name)
+       return          void
+       param           program         UInt32 in value
+       param           index           UInt32 in value
+       param           name            Char in array []
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+CompileShader(shader)
+       return          void
+       param           shader          UInt32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+CreateProgram()
+       return          UInt32
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+CreateShader(type)
+       return          UInt32
+       param           type            GLenum in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DeleteProgram(program)
+       return          void
+       param           program         UInt32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DeleteShader(shader)
+       return          void
+       param           shader          UInt32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DetachShader(program, shader)
+       return          void
+       param           program         UInt32 in value
+       param           shader          UInt32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DisableVertexAttribArray(index)
+       return          void
+       param           index           UInt32 in value
+       dlflags         notlistable
+       category        VERSION_2_0
+       version         2.0
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          666
+
+EnableVertexAttribArray(index)
+       return          void
+       param           index           UInt32 in value
+       dlflags         notlistable
+       category        VERSION_2_0
+       version         2.0
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          665
+
+GetActiveAttrib(program, index, bufSize, length, size, type, name)
+       return          void
+       param           program         UInt32 in value
+       param           index           UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           size            Int32 out array [1]
+       param           type            GLenum out array [1]
+       param           name            Char out array []
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetActiveUniform(program, index, bufSize, length, size, type, name)
+       return          void
+       param           program         UInt32 in value
+       param           index           UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           size            Int32 out array [1]
+       param           type            GLenum out array [1]
+       param           name            Char out array []
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetAttachedShaders(program, maxCount, count, obj)
+       return          void
+       param           program         UInt32 in value
+       param           maxCount        SizeI in value
+       param           count           SizeI out array [1]
+       param           obj             UInt32 out array [count]
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetAttribLocation(program, name)
+       return          Int32
+       param           program         UInt32 in value
+       param           name            Char in array []
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetProgramiv(program, pname, params)
+       return          void
+       param           program         UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [pname]
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetProgramInfoLog(program, bufSize, length, infoLog)
+       return          void
+       param           program         UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           infoLog         Char out array [length]
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetShaderiv(shader, pname, params)
+       return          void
+       param           shader          UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [pname]
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetShaderInfoLog(shader, bufSize, length, infoLog)
+       return          void
+       param           shader          UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           infoLog         Char out array [length]
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetShaderSource(shader, bufSize, length, source)
+       return          void
+       param           shader          UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           source          Char out array [length]
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetUniformLocation(program, name)
+       return          Int32
+       param           program         UInt32 in value
+       param           name            Char in array []
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetUniformfv(program, location, params)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           params          Float32 out array [location]
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetUniformiv(program, location, params)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           params          Int32 out array [location]
+       category        VERSION_2_0
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVertexAttribdv(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribPropertyARB in value
+       param           params          Float64 out array [4]
+       dlflags         notlistable
+       category        VERSION_2_0
+       version         2.0
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1301
+       offset          588
+
+GetVertexAttribfv(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribPropertyARB in value
+       param           params          Float32 out array [4]
+       dlflags         notlistable
+       category        VERSION_2_0
+       version         2.0
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1302
+       offset          589
+
+GetVertexAttribiv(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribPropertyARB in value
+       param           params          Int32 out array [4]
+       dlflags         notlistable
+       category        VERSION_2_0
+       version         2.0
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1303
+       offset          590
+
+GetVertexAttribPointerv(index, pname, pointer)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribPointerPropertyARB in value
+       param           pointer         VoidPointer out array [1]
+       dlflags         notlistable
+       category        VERSION_2_0
+       version         2.0
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          591
+
+IsProgram(program)
+       return          Boolean
+       param           program         UInt32 in value
+       dlflags         notlistable
+       category        VERSION_2_0
+       version         2.0
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1304
+       offset          592
+
+IsShader(shader)
+       return          Boolean
+       param           shader          UInt32 in value
+       dlflags         notlistable
+       category        VERSION_2_0
+       version         2.0
+       extension       soft WINSOFT NV10
+       glxvendorpriv   ?
+       offset          ?
+
+LinkProgram(program)
+       return          void
+       param           program         UInt32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ShaderSource(shader, count, string, length)
+       return          void
+       param           shader          UInt32 in value
+       param           count           SizeI in value
+       param           string          CharPointer in array [count]
+       param           length          Int32 in array [1]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UseProgram(program)
+       return          void
+       param           program         UInt32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform1f(location, v0)
+       return          void
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform2f(location, v0, v1)
+       return          void
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       param           v1              Float32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform3f(location, v0, v1, v2)
+       return          void
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       param           v1              Float32 in value
+       param           v2              Float32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform4f(location, v0, v1, v2, v3)
+       return          void
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       param           v1              Float32 in value
+       param           v2              Float32 in value
+       param           v3              Float32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform1i(location, v0)
+       return          void
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform2i(location, v0, v1)
+       return          void
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       param           v1              Int32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform3i(location, v0, v1, v2)
+       return          void
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       param           v1              Int32 in value
+       param           v2              Int32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform4i(location, v0, v1, v2, v3)
+       return          void
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       param           v1              Int32 in value
+       param           v2              Int32 in value
+       param           v3              Int32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform1fv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform2fv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform3fv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform4fv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform1iv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform2iv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform3iv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform4iv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix2fv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix3fv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix4fv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count]
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ValidateProgram(program)
+       return          void
+       param           program         UInt32 in value
+       category        VERSION_2_0
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttrib1d(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib1dv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          603
+
+VertexAttrib1dv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [1]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4197
+       offset          604
+
+VertexAttrib1f(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib1fv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          605
+
+VertexAttrib1fv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [1]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4193
+       offset          606
+
+VertexAttrib1s(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib1sv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          607
+
+VertexAttrib1sv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [1]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4189
+       offset          608
+
+VertexAttrib2d(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib2dv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          609
+
+VertexAttrib2dv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [2]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4198
+       offset          610
+
+VertexAttrib2f(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib2fv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          611
+
+VertexAttrib2fv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [2]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4194
+       offset          612
+
+VertexAttrib2s(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib2sv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          613
+
+VertexAttrib2sv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [2]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4190
+       offset          614
+
+VertexAttrib3d(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib3dv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          615
+
+VertexAttrib3dv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [3]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4199
+       offset          616
+
+VertexAttrib3f(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib3fv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          617
+
+VertexAttrib3fv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [3]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4195
+       offset          618
+
+VertexAttrib3s(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       param           z               Int16 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib3sv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          619
+
+VertexAttrib3sv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [3]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4191
+       offset          620
+
+VertexAttrib4Nbv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int8 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          659
+
+VertexAttrib4Niv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          661
+
+VertexAttrib4Nsv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          660
+
+VertexAttrib4Nub(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               UInt8 in value
+       param           y               UInt8 in value
+       param           z               UInt8 in value
+       param           w               UInt8 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          627
+
+VertexAttrib4Nubv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt8 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       glxropcode      4201
+       offset          628
+
+VertexAttrib4Nuiv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          663
+
+VertexAttrib4Nusv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt16 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          662
+
+VertexAttrib4bv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int8 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          654
+
+VertexAttrib4d(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib4dv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          621
+
+VertexAttrib4dv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4200
+       offset          622
+
+VertexAttrib4f(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib4fv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          623
+
+VertexAttrib4fv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxropcode      4196
+       offset          624
+
+VertexAttrib4iv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          655
+
+VertexAttrib4s(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       param           z               Int16 in value
+       param           w               Int16 in value
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       vectorequiv     VertexAttrib4sv
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          625
+
+VertexAttrib4sv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       glxropcode      4192
+       offset          626
+
+VertexAttrib4ubv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt8 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          656
+
+VertexAttrib4uiv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          658
+
+VertexAttrib4usv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt16 in array [4]
+       category        VERSION_2_0
+       version         2.0
+       deprecated      3.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          657
+
+VertexAttribPointer(index, size, type, normalized, stride, pointer)
+       return          void
+       param           index           UInt32 in value
+       param           size            Int32 in value
+       param           type            VertexAttribPointerTypeARB in value
+       param           normalized      Boolean in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride)] retained
+       dlflags         notlistable
+       category        VERSION_2_0
+       version         2.0
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          664
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 2.1 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 2.1 (ARB_pixel_buffer_object) commands - none
+
+# OpenGL 2.1 (EXT_texture_sRGB) commands - none
+
+# New commands in OpenGL 2.1
+
+UniformMatrix2x3fv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [6]
+       category        VERSION_2_1
+       version         2.1
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix3x2fv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [6]
+       category        VERSION_2_1
+       version         2.1
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix2x4fv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [8]
+       category        VERSION_2_1
+       version         2.1
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix4x2fv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [8]
+       category        VERSION_2_1
+       version         2.1
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix3x4fv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [12]
+       category        VERSION_2_1
+       version         2.1
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix4x3fv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [12]
+       category        VERSION_2_1
+       version         2.1
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 3.0 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 3.0 (EXT_draw_buffers2) commands
+
+ColorMaski(index, r, g, b, a)
+       return          void
+       param           index           UInt32 in value
+       param           r               Boolean in value
+       param           g               Boolean in value
+       param           b               Boolean in value
+       param           a               Boolean in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glxflags        ignore
+       glfflags        ignore
+
+GetBooleani_v(target, index, data)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           data            Boolean out array [COMPSIZE(target)]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+GetIntegeri_v(target, index, data)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           data            Int32 out array [COMPSIZE(target)]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+Enablei(target, index)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glxflags        ignore
+       glfflags        ignore
+
+Disablei(target, index)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glxflags        ignore
+       glfflags        ignore
+
+IsEnabledi(target, index)
+       return          Boolean
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+# OpenGL 3.0 (EXT_transform_feedback) commands
+
+BeginTransformFeedback(primitiveMode)
+       return          void
+       param           primitiveMode   GLenum in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+EndTransformFeedback()
+       return          void
+       category        VERSION_3_0
+       version         3.0
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+BindBufferRange(target, index, buffer, offset, size)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           buffer          UInt32 in value
+       param           offset          BufferOffset in value
+       param           size            BufferSize in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+BindBufferBase(target, index, buffer)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           buffer          UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+TransformFeedbackVaryings(program, count, varyings, bufferMode)
+       return          void
+       param           program         UInt32 in value
+       param           count           SizeI in value
+       param           varyings        CharPointer in array [count]
+       param           bufferMode      GLenum in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name)
+       return          void
+       param           program         UInt32 in value
+       param           index           UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           size            SizeI out array [1]
+       param           type            GLenum out array [1]
+       param           name            Char out array [COMPSIZE(length)]
+       category        VERSION_3_0
+       dlflags         notlistable
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+ClampColor(target, clamp)
+       return          void
+       param           target          ClampColorTargetARB in value
+       param           clamp           ClampColorModeARB in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glxropcode      234
+       glxflags        ignore
+       offset          ?
+
+BeginConditionalRender(id, mode)
+       return          void
+       param           id              UInt32 in value
+       param           mode            TypeEnum in value
+       category        VERSION_3_0
+       version         3.0
+       glfflags        ignore
+       glxflags        ignore
+
+EndConditionalRender()
+       return          void
+       category        VERSION_3_0
+       version         3.0
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribIPointer(index, size, type, stride, pointer)
+       return          void
+       param           index           UInt32 in value
+       param           size            Int32 in value
+       param           type            VertexAttribEnum in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride)] retained
+       category        VERSION_3_0
+       version         3.0
+       dlflags         notlistable
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+GetVertexAttribIiv(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribEnum in value
+       param           params          Int32 out array [1]
+       category        VERSION_3_0
+       version         3.0
+       dlflags         notlistable
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+GetVertexAttribIuiv(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribEnum in value
+       param           params          UInt32 out array [1]
+       category        VERSION_3_0
+       version         3.0
+       dlflags         notlistable
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+# OpenGL 3.0 (NV_vertex_program4) commands
+
+VertexAttribI1i(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       vectorequiv     VertexAttribI1iv
+       glxvectorequiv  VertexAttribI1iv
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI2i(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       vectorequiv     VertexAttribI2iv
+       glxvectorequiv  VertexAttribI2iv
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI3i(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       param           z               Int32 in value
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       vectorequiv     VertexAttribI3iv
+       glxvectorequiv  VertexAttribI3iv
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI4i(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       param           z               Int32 in value
+       param           w               Int32 in value
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       vectorequiv     VertexAttribI4iv
+       glxvectorequiv  VertexAttribI4iv
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI1ui(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       vectorequiv     VertexAttribI1uiv
+       glxvectorequiv  VertexAttribI1uiv
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI2ui(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       param           y               UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       vectorequiv     VertexAttribI2uiv
+       glxvectorequiv  VertexAttribI2uiv
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI3ui(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       param           y               UInt32 in value
+       param           z               UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       vectorequiv     VertexAttribI3uiv
+       glxvectorequiv  VertexAttribI3uiv
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI4ui(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       param           y               UInt32 in value
+       param           z               UInt32 in value
+       param           w               UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       vectorequiv     VertexAttribI4uiv
+       glxvectorequiv  VertexAttribI4uiv
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI1iv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [1]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI2iv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [2]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI3iv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [3]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI4iv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [4]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI1uiv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [1]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI2uiv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [2]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI3uiv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [3]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI4uiv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [4]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI4bv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int8 in array [4]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI4sv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [4]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI4ubv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt8 in array [4]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+VertexAttribI4usv(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt16 in array [4]
+       category        VERSION_3_0
+       version         3.0
+       deprecated      3.1
+       beginend        allow-inside
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+# OpenGL 3.0 (EXT_gpu_shader4) commands
+
+GetUniformuiv(program, location, params)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           params          UInt32 out array [COMPSIZE(program/location)]
+       category        VERSION_3_0
+       dlflags         notlistable
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+BindFragDataLocation(program, color, name)
+       return          void
+       param           program         UInt32 in value
+       param           color           UInt32 in value
+       param           name            Char in array [COMPSIZE(name)]
+       category        VERSION_3_0
+       dlflags         notlistable
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+GetFragDataLocation(program, name)
+       return          Int32
+       param           program         UInt32 in value
+       param           name            Char in array [COMPSIZE(name)]
+       category        VERSION_3_0
+       dlflags         notlistable
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+Uniform1ui(location, v0)
+       return          void
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+Uniform2ui(location, v0, v1)
+       return          void
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       param           v1              UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+Uniform3ui(location, v0, v1, v2)
+       return          void
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       param           v1              UInt32 in value
+       param           v2              UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+Uniform4ui(location, v0, v1, v2, v3)
+       return          void
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       param           v1              UInt32 in value
+       param           v2              UInt32 in value
+       param           v3              UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+Uniform1uiv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+Uniform2uiv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count*2]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+Uniform3uiv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count*3]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+Uniform4uiv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count*4]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+# OpenGL 3.0 (EXT_texture_integer) commands
+
+TexParameterIiv(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          Int32 in array [COMPSIZE(pname)]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+TexParameterIuiv(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          UInt32 in array [COMPSIZE(pname)]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+GetTexParameterIiv(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        VERSION_3_0
+       dlflags         notlistable
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+GetTexParameterIuiv(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          UInt32 out array [COMPSIZE(pname)]
+       category        VERSION_3_0
+       dlflags         notlistable
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+# New commands in OpenGL 3.0
+
+ClearBufferiv(buffer, drawbuffer, value)
+       return          void
+       param           buffer          GLenum in value
+       param           drawbuffer      DrawBufferName in value
+       param           value           Int32 in array [COMPSIZE(buffer)]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+ClearBufferuiv(buffer, drawbuffer, value)
+       return          void
+       param           buffer          GLenum in value
+       param           drawbuffer      DrawBufferName in value
+       param           value           UInt32 in array [COMPSIZE(buffer)]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+ClearBufferfv(buffer, drawbuffer, value)
+       return          void
+       param           buffer          GLenum in value
+       param           drawbuffer      DrawBufferName in value
+       param           value           Float32 in array [COMPSIZE(buffer)]
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+ClearBufferfi(buffer, drawbuffer, depth, stencil)
+       return          void
+       param           buffer          GLenum in value
+       param           drawbuffer      DrawBufferName in value
+       param           depth           Float32 in value
+       param           stencil         Int32 in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+GetStringi(name, index)
+       return          String
+       param           name            GLenum in value
+       param           index           UInt32 in value
+       category        VERSION_3_0
+       version         3.0
+       extension
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       glfflags        ignore
+       glxsingle       ?
+
+passthru: /* OpenGL 3.0 also reuses entry points from these extensions: */
+passthru: /* ARB_framebuffer_object */
+passthru: /* ARB_map_buffer_range */
+passthru: /* ARB_vertex_array_object */
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 3.0 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+# (none - VertexAttribI* were moved back into non-deprecated)
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 3.1 commands
+#
+###############################################################################
+###############################################################################
+
+# New commands in OpenGL 3.1 - none
+
+# OpenGL 3.1 (ARB_draw_instanced) commands
+
+DrawArraysInstanced(mode, first, count, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           first           Int32 in value
+       param           count           SizeI in value
+       param           primcount       SizeI in value
+       category        VERSION_3_1
+       version         3.1
+       extension
+       dlflags         notlistable
+       vectorequiv     ArrayElement
+       glfflags        ignore
+       glxflags        ignore
+
+DrawElementsInstanced(mode, count, type, indices, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           count           SizeI in value
+       param           type            DrawElementsType in value
+       param           indices         Void in array [COMPSIZE(count/type)]
+       param           primcount       SizeI in value
+       category        VERSION_3_1
+       version         3.1
+       extension
+       dlflags         notlistable
+       vectorequiv     ArrayElement
+       glfflags        ignore
+       glxflags        ignore
+
+# OpenGL 3.1 (ARB_texture_buffer_object) commands
+
+TexBuffer(target, internalformat, buffer)
+       return          void
+       param           target          TextureTarget in value
+       param           internalformat  GLenum in value
+       param           buffer          UInt32 in value
+       category        VERSION_3_1
+       version         3.1
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+# OpenGL 3.1 (ARB_texture_rectangle) commands - none
+
+# OpenGL 3.1 (SNORM texture) commands - none
+
+# OpenGL 3.1 (NV_primitive_restart) commands
+# This is *not* an alias of PrimitiveRestartIndexNV, since it sets
+# server instead of client state.
+
+PrimitiveRestartIndex(index)
+       return          void
+       param           index           UInt32 in value
+       category        VERSION_3_1
+       version         3.1
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+passthru: /* OpenGL 3.1 also reuses entry points from these extensions: */
+passthru: /* ARB_copy_buffer */
+passthru: /* ARB_uniform_buffer_object */
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 3.2 commands
+#
+###############################################################################
+###############################################################################
+
+# New commands in OpenGL 3.2
+
+GetInteger64i_v(target, index, data)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           data            Int64 out array [COMPSIZE(target)]
+       category        VERSION_3_2
+       version         3.2
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+
+GetBufferParameteri64v(target, pname, params)
+       return          void
+       param           target          BufferTargetARB in value
+       param           pname           BufferPNameARB in value
+       param           params          Int64 out array [COMPSIZE(pname)]
+       category        VERSION_3_2
+       dlflags         notlistable
+       version         3.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+
+# OpenGL 3.2 (ARB_depth_clamp) commands - none
+# OpenGL 3.2 (ARB_fragment_coord_conventions) commands - none
+
+# OpenGL 3.2 (ARB_geometry_shader4) commands
+
+ProgramParameteri(program, pname, value)
+       return          void
+       param           program         UInt32 in value
+       param           pname           GLenum in value
+       param           value           Int32 in value
+       category        VERSION_3_2
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+FramebufferTexture(target, attachment, texture, level)
+       return          void
+       param           target          GLenum in value
+       param           attachment      GLenum in value
+       param           texture         UInt32 in value
+       param           level           Int32 in value
+       category        VERSION_3_2
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+# FramebufferTextureLayer already declared in ARB_framebuffer_object
+# FramebufferTextureLayer(target, attachment, texture, level, layer)
+
+# Not promoted to the core along with the rest
+# FramebufferTextureFace(target, attachment, texture, level, face)
+
+# OpenGL 3.2  (ARB_seamless_cube_map) commands - none
+# OpenGL 3.2  (ARB_vertex_array_bgra) commands - none
+
+passthru: /* OpenGL 3.2 also reuses entry points from these extensions: */
+passthru: /* ARB_draw_elements_base_vertex */
+passthru: /* ARB_provoking_vertex */
+passthru: /* ARB_sync */
+passthru: /* ARB_texture_multisample */
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 3.3 commands
+#
+###############################################################################
+###############################################################################
+
+# New commands in OpenGL 3.3 - none
+newcategory: VERSION_3_3
+
+passthru: /* OpenGL 3.3 also reuses entry points from these extensions: */
+passthru: /* ARB_blend_func_extended */
+passthru: /* ARB_sampler_objects */
+passthru: /* ARB_explicit_attrib_location, but it has none */
+passthru: /* ARB_occlusion_query2 (no entry points) */
+passthru: /* ARB_shader_bit_encoding (no entry points) */
+passthru: /* ARB_texture_rgb10_a2ui (no entry points) */
+passthru: /* ARB_texture_swizzle (no entry points) */
+passthru: /* ARB_timer_query */
+passthru: /* ARB_vertex_type_2_10_10_10_rev */
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 4.0 commands
+#
+###############################################################################
+###############################################################################
+
+# New commands in OpenGL 4.0 - none
+newcategory: VERSION_4_0
+
+passthru: /* OpenGL 4.0 also reuses entry points from these extensions: */
+passthru: /* ARB_gpu_shader5 (no entry points) */
+passthru: /* ARB_gpu_shader_fp64 */
+passthru: /* ARB_shader_subroutine */
+passthru: /* ARB_tessellation_shader */
+passthru: /* ARB_texture_buffer_object_rgb32 (no entry points) */
+passthru: /* ARB_transform_feedback2 */
+passthru: /* ARB_transform_feedback3 */
+
+
+###############################################################################
+###############################################################################
+#
+# ARB extensions, in order by ARB extension number
+#
+###############################################################################
+###############################################################################
+
+###############################################################################
+#
+# ARB Extension #1
+# ARB_multitexture commands
+#
+###############################################################################
+
+ActiveTextureARB(texture)
+       return          void
+       param           texture         TextureUnit in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      197
+       alias           ActiveTexture
+
+ClientActiveTextureARB(texture)
+       return          void
+       param           texture         TextureUnit in value
+       category        ARB_multitexture
+       dlflags         notlistable
+       glxflags        ARB client-handcode client-intercept server-handcode
+       version         1.2
+       alias           ClientActiveTexture
+
+MultiTexCoord1dARB(target, s)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordD in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord1dv
+
+MultiTexCoord1dvARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordD in array [1]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      198
+       alias           MultiTexCoord1dv
+
+MultiTexCoord1fARB(target, s)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordF in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord1fv
+
+MultiTexCoord1fvARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordF in array [1]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      199
+       alias           MultiTexCoord1fv
+
+MultiTexCoord1iARB(target, s)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordI in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord1iv
+
+MultiTexCoord1ivARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordI in array [1]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      200
+       alias           MultiTexCoord1iv
+
+MultiTexCoord1sARB(target, s)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordS in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord1sv
+
+MultiTexCoord1svARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordS in array [1]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      201
+       alias           MultiTexCoord1sv
+
+MultiTexCoord2dARB(target, s, t)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordD in value
+       param           t               CoordD in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord2dv
+
+MultiTexCoord2dvARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordD in array [2]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      202
+       alias           MultiTexCoord2dv
+
+MultiTexCoord2fARB(target, s, t)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordF in value
+       param           t               CoordF in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord2fv
+
+MultiTexCoord2fvARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordF in array [2]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      203
+       alias           MultiTexCoord2fv
+
+MultiTexCoord2iARB(target, s, t)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordI in value
+       param           t               CoordI in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord2iv
+
+MultiTexCoord2ivARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordI in array [2]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      204
+       alias           MultiTexCoord2iv
+
+MultiTexCoord2sARB(target, s, t)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordS in value
+       param           t               CoordS in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord2sv
+
+MultiTexCoord2svARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordS in array [2]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      205
+       alias           MultiTexCoord2sv
+
+MultiTexCoord3dARB(target, s, t, r)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordD in value
+       param           t               CoordD in value
+       param           r               CoordD in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord3dv
+
+MultiTexCoord3dvARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordD in array [3]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      206
+       alias           MultiTexCoord3dv
+
+MultiTexCoord3fARB(target, s, t, r)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordF in value
+       param           t               CoordF in value
+       param           r               CoordF in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord3fv
+
+MultiTexCoord3fvARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordF in array [3]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      207
+       alias           MultiTexCoord3fv
+
+MultiTexCoord3iARB(target, s, t, r)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordI in value
+       param           t               CoordI in value
+       param           r               CoordI in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord3iv
+
+MultiTexCoord3ivARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordI in array [3]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      208
+       alias           MultiTexCoord3iv
+
+MultiTexCoord3sARB(target, s, t, r)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordS in value
+       param           t               CoordS in value
+       param           r               CoordS in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord3sv
+
+MultiTexCoord3svARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordS in array [3]
+       category        ARB_multitexture
+       version         1.2
+       glxflags        ARB
+       glxropcode      209
+       alias           MultiTexCoord3sv
+
+MultiTexCoord4dARB(target, s, t, r, q)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordD in value
+       param           t               CoordD in value
+       param           r               CoordD in value
+       param           q               CoordD in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord4dv
+
+MultiTexCoord4dvARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordD in array [4]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      210
+       alias           MultiTexCoord4dv
+
+MultiTexCoord4fARB(target, s, t, r, q)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordF in value
+       param           t               CoordF in value
+       param           r               CoordF in value
+       param           q               CoordF in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord4fv
+
+MultiTexCoord4fvARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordF in array [4]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      211
+       alias           MultiTexCoord4fv
+
+MultiTexCoord4iARB(target, s, t, r, q)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordI in value
+       param           t               CoordI in value
+       param           r               CoordI in value
+       param           q               CoordI in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord4iv
+
+MultiTexCoord4ivARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordI in array [4]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      212
+       alias           MultiTexCoord4iv
+
+MultiTexCoord4sARB(target, s, t, r, q)
+       return          void
+       param           target          TextureUnit in value
+       param           s               CoordS in value
+       param           t               CoordS in value
+       param           r               CoordS in value
+       param           q               CoordS in value
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       vectorequiv     MultiTexCoord4sv
+
+MultiTexCoord4svARB(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               CoordS in array [4]
+       category        ARB_multitexture
+       glxflags        ARB
+       version         1.2
+       glxropcode      213
+       alias           MultiTexCoord4sv
+
+################################################################################
+#
+# ARB Extension #2 - GLX_ARB_get_proc_address
+#
+###############################################################################
+
+################################################################################
+#
+# ARB Extension #3
+# ARB_transpose_matrix commands
+#
+###############################################################################
+
+LoadTransposeMatrixfARB(m)
+       return          void
+       param           m               Float32 in array [16]
+       category        ARB_transpose_matrix
+       glxflags        ARB client-handcode client-intercept server-handcode
+       version         1.2
+       alias           LoadTransposeMatrixf
+
+LoadTransposeMatrixdARB(m)
+       return          void
+       param           m               Float64 in array [16]
+       category        ARB_transpose_matrix
+       glxflags        ARB client-handcode client-intercept server-handcode
+       version         1.2
+       alias           LoadTransposeMatrixd
+
+MultTransposeMatrixfARB(m)
+       return          void
+       param           m               Float32 in array [16]
+       category        ARB_transpose_matrix
+       glxflags        ARB client-handcode client-intercept server-handcode
+       version         1.2
+       alias           MultTransposeMatrixf
+
+MultTransposeMatrixdARB(m)
+       return          void
+       param           m               Float64 in array [16]
+       category        ARB_transpose_matrix
+       glxflags        ARB client-handcode client-intercept server-handcode
+       version         1.2
+       alias           MultTransposeMatrixd
+
+################################################################################
+#
+# ARB Extension #4 - WGL_ARB_buffer_region
+#
+###############################################################################
+
+################################################################################
+#
+# ARB Extension #5
+# ARB_multisample commands
+#
+###############################################################################
+
+SampleCoverageARB(value, invert)
+       return          void
+       param           value           ClampedFloat32 in value
+       param           invert          Boolean in value
+       category        ARB_multisample
+       glxflags        ARB
+       version         1.2
+       alias           SampleCoverage
+
+################################################################################
+#
+# ARB Extension #6
+# ARB_texture_env_add commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_env_add
+
+################################################################################
+#
+# ARB Extension #7
+# ARB_texture_cube_map commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_cube_map
+
+################################################################################
+#
+# ARB Extension #8 - WGL_ARB_extensions_string
+# ARB Extension #9 - WGL_ARB_pixel_format commands
+# ARB Extension #10 - WGL_ARB_make_current_read commands
+# ARB Extension #11 - WGL_ARB_pbuffer
+#
+###############################################################################
+
+################################################################################
+#
+# ARB Extension #12
+# ARB_texture_compression commands
+#
+###############################################################################
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage3DARB(target, level, internalformat, width, height, depth, border, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        ARB_texture_compression
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.2
+       glxropcode      216
+       alias           CompressedTexImage3D
+       wglflags        client-handcode server-handcode
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        ARB_texture_compression
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.2
+       glxropcode      215
+       alias           CompressedTexImage2D
+       wglflags        client-handcode server-handcode
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage1DARB(target, level, internalformat, width, border, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        ARB_texture_compression
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.2
+       glxropcode      214
+       alias           CompressedTexImage1D
+       wglflags        client-handcode server-handcode
+
+CompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        ARB_texture_compression
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.2
+       glxropcode      219
+       alias           CompressedTexSubImage3D
+       wglflags        client-handcode server-handcode
+
+CompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        ARB_texture_compression
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.2
+       glxropcode      218
+       alias           CompressedTexSubImage2D
+       wglflags        client-handcode server-handcode
+
+CompressedTexSubImage1DARB(target, level, xoffset, width, format, imageSize, data)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           data            CompressedTextureARB in array [imageSize]
+       category        ARB_texture_compression
+       dlflags         handcode
+       glxflags        ARB client-handcode server-handcode
+       version         1.2
+       glxropcode      217
+       alias           CompressedTexSubImage1D
+       wglflags        client-handcode server-handcode
+
+GetCompressedTexImageARB(target, level, img)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           img             CompressedTextureARB out array [COMPSIZE(target/level)]
+       category        ARB_texture_compression
+       dlflags         notlistable
+       glxflags        ARB client-handcode server-handcode
+       version         1.2
+       glxsingle       160
+       alias           GetCompressedTexImage
+       wglflags        client-handcode server-handcode
+
+################################################################################
+#
+# ARB Extension #13
+# ARB_texture_border_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_border_clamp
+
+###############################################################################
+#
+# ARB Extension #14
+# ARB_point_parameters commands
+#
+###############################################################################
+
+PointParameterfARB(pname, param)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           param           CheckedFloat32 in value
+       category        ARB_point_parameters
+       version         1.0
+       glxflags        ARB
+       glxropcode      2065
+       extension
+       alias           PointParameterf
+
+PointParameterfvARB(pname, params)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        ARB_point_parameters
+       version         1.0
+       glxflags        ARB
+       glxropcode      2066
+       extension
+       alias           PointParameterfv
+
+################################################################################
+#
+# ARB Extension #15
+# ARB_vertex_blend commands
+#
+###############################################################################
+
+WeightbvARB(size, weights)
+       return          void
+       param           size            Int32 in value
+       param           weights         Int8 in array [size]
+       category        ARB_vertex_blend
+       version         1.1
+       extension
+       glxropcode      220
+       glxflags        ignore
+       offset          ?
+
+WeightsvARB(size, weights)
+       return          void
+       param           size            Int32 in value
+       param           weights         Int16 in array [size]
+       category        ARB_vertex_blend
+       version         1.1
+       extension
+       glxropcode      222
+       glxflags        ignore
+       offset          ?
+
+WeightivARB(size, weights)
+       return          void
+       param           size            Int32 in value
+       param           weights         Int32 in array [size]
+       category        ARB_vertex_blend
+       version         1.1
+       extension
+       glxropcode      224
+       glxflags        ignore
+       offset          ?
+
+WeightfvARB(size, weights)
+       return          void
+       param           size            Int32 in value
+       param           weights         Float32 in array [size]
+       category        ARB_vertex_blend
+       version         1.1
+       extension
+       glxropcode      227
+       glxflags        ignore
+       offset          ?
+
+WeightdvARB(size, weights)
+       return          void
+       param           size            Int32 in value
+       param           weights         Float64 in array [size]
+       category        ARB_vertex_blend
+       version         1.1
+       extension
+       glxropcode      228
+       glxflags        ignore
+       offset          ?
+
+WeightubvARB(size, weights)
+       return          void
+       param           size            Int32 in value
+       param           weights         UInt8 in array [size]
+       category        ARB_vertex_blend
+       version         1.1
+       extension
+       glxropcode      221
+       glxflags        ignore
+       offset          ?
+
+WeightusvARB(size, weights)
+       return          void
+       param           size            Int32 in value
+       param           weights         UInt16 in array [size]
+       category        ARB_vertex_blend
+       version         1.1
+       extension
+       glxropcode      223
+       glxflags        ignore
+       offset          ?
+
+WeightuivARB(size, weights)
+       return          void
+       param           size            Int32 in value
+       param           weights         UInt32 in array [size]
+       category        ARB_vertex_blend
+       version         1.1
+       extension
+       glxropcode      225
+       glxflags        ignore
+       offset          ?
+
+WeightPointerARB(size, type, stride, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            WeightPointerTypeARB in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride)] retained
+       category        ARB_vertex_blend
+       version         1.1
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       offset          ?
+
+VertexBlendARB(count)
+       return          void
+       param           count           Int32 in value
+       category        ARB_vertex_blend
+       version         1.1
+       extension
+       glxropcode      226
+       glxflags        ignore
+       offset          ?
+
+################################################################################
+#
+# ARB Extension #16
+# ARB_matrix_palette commands
+#
+###############################################################################
+
+CurrentPaletteMatrixARB(index)
+       return          void
+       param           index           Int32 in value
+       category        ARB_matrix_palette
+       version         1.1
+       extension
+       glxropcode      4329
+       glxflags        ignore
+       offset          ?
+
+MatrixIndexubvARB(size, indices)
+       return          void
+       param           size            Int32 in value
+       param           indices         UInt8 in array [size]
+       category        ARB_matrix_palette
+       version         1.1
+       extension
+       glxropcode      4326
+       glxflags        ignore
+       offset          ?
+
+MatrixIndexusvARB(size, indices)
+       return          void
+       param           size            Int32 in value
+       param           indices         UInt16 in array [size]
+       category        ARB_matrix_palette
+       version         1.1
+       extension
+       glxropcode      4327
+       glxflags        ignore
+       offset          ?
+
+MatrixIndexuivARB(size, indices)
+       return          void
+       param           size            Int32 in value
+       param           indices         UInt32 in array [size]
+       category        ARB_matrix_palette
+       version         1.1
+       extension
+       glxropcode      4328
+       glxflags        ignore
+       offset          ?
+
+MatrixIndexPointerARB(size, type, stride, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            MatrixIndexPointerTypeARB in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride)] retained
+       category        ARB_matrix_palette
+       version         1.1
+       extension
+       dlflags         notlistable
+       glxflags        ignore
+       offset          ?
+
+################################################################################
+#
+# ARB Extension #17
+# ARB_texture_env_combine commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_env_combine
+
+################################################################################
+#
+# ARB Extension #18
+# ARB_texture_env_crossbar commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_env_crossbar
+
+################################################################################
+#
+# ARB Extension #19
+# ARB_texture_env_dot3 commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_env_dot3
+
+###############################################################################
+#
+# ARB Extension #20 - WGL_ARB_render_texture
+#
+###############################################################################
+
+###############################################################################
+#
+# ARB Extension #21
+# ARB_texture_mirrored_repeat commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_mirrored_repeat
+
+###############################################################################
+#
+# ARB Extension #22
+# ARB_depth_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_depth_texture
+
+###############################################################################
+#
+# ARB Extension #23
+# ARB_shadow commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_shadow
+
+###############################################################################
+#
+# ARB Extension #24
+# ARB_shadow_ambient commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_shadow_ambient
+
+###############################################################################
+#
+# ARB Extension #25
+# ARB_window_pos commands
+# Note: all entry points use glxropcode ropcode 230, with 3 float parameters
+#
+###############################################################################
+
+WindowPos2dARB(x, y)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       category        ARB_window_pos
+       vectorequiv     WindowPos2dvARB
+       version         1.0
+       alias           WindowPos2d
+
+WindowPos2dvARB(v)
+       return          void
+       param           v               CoordD in array [2]
+       category        ARB_window_pos
+       version         1.0
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       alias           WindowPos2dv
+
+WindowPos2fARB(x, y)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       category        ARB_window_pos
+       vectorequiv     WindowPos2fvARB
+       version         1.0
+       alias           WindowPos2f
+
+WindowPos2fvARB(v)
+       return          void
+       param           v               CoordF in array [2]
+       category        ARB_window_pos
+       version         1.0
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       alias           WindowPos2fv
+
+WindowPos2iARB(x, y)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       category        ARB_window_pos
+       vectorequiv     WindowPos2ivARB
+       version         1.0
+       alias           WindowPos2i
+
+WindowPos2ivARB(v)
+       return          void
+       param           v               CoordI in array [2]
+       category        ARB_window_pos
+       version         1.0
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       alias           WindowPos2iv
+
+WindowPos2sARB(x, y)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       category        ARB_window_pos
+       vectorequiv     WindowPos2svARB
+       version         1.0
+       alias           WindowPos2s
+
+WindowPos2svARB(v)
+       return          void
+       param           v               CoordS in array [2]
+       category        ARB_window_pos
+       version         1.0
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       alias           WindowPos2sv
+
+WindowPos3dARB(x, y, z)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       param           z               CoordD in value
+       vectorequiv     WindowPos3dvARB
+       category        ARB_window_pos
+       version         1.0
+       alias           WindowPos3d
+
+WindowPos3dvARB(v)
+       return          void
+       param           v               CoordD in array [3]
+       category        ARB_window_pos
+       version         1.0
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       alias           WindowPos3dv
+
+WindowPos3fARB(x, y, z)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       param           z               CoordF in value
+       category        ARB_window_pos
+       vectorequiv     WindowPos3fvARB
+       version         1.0
+       alias           WindowPos3f
+
+WindowPos3fvARB(v)
+       return          void
+       param           v               CoordF in array [3]
+       category        ARB_window_pos
+       version         1.0
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       alias           WindowPos3fv
+
+WindowPos3iARB(x, y, z)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       param           z               CoordI in value
+       category        ARB_window_pos
+       vectorequiv     WindowPos3ivARB
+       version         1.0
+       alias           WindowPos3i
+
+WindowPos3ivARB(v)
+       return          void
+       param           v               CoordI in array [3]
+       category        ARB_window_pos
+       version         1.0
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       alias           WindowPos3iv
+
+WindowPos3sARB(x, y, z)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       param           z               CoordS in value
+       category        ARB_window_pos
+       vectorequiv     WindowPos3svARB
+       version         1.0
+       alias           WindowPos3s
+
+WindowPos3svARB(v)
+       return          void
+       param           v               CoordS in array [3]
+       category        ARB_window_pos
+       version         1.0
+       glxropcode      230
+       glxflags        client-handcode server-handcode
+       alias           WindowPos3sv
+
+###############################################################################
+#
+# ARB Extension #26
+# ARB_vertex_program commands
+#
+###############################################################################
+
+VertexAttrib1dARB(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib1dvARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib1d
+
+VertexAttrib1dvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [1]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4197
+       alias           VertexAttrib1dv
+
+VertexAttrib1fARB(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib1fvARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib1f
+
+VertexAttrib1fvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [1]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4193
+       alias           VertexAttrib1fv
+
+VertexAttrib1sARB(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib1svARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib1s
+
+VertexAttrib1svARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [1]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4189
+       alias           VertexAttrib1sv
+
+VertexAttrib2dARB(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib2dvARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib2d
+
+VertexAttrib2dvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [2]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4198
+       alias           VertexAttrib2dv
+
+VertexAttrib2fARB(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib2fvARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib2f
+
+VertexAttrib2fvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [2]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4194
+       alias           VertexAttrib2fv
+
+VertexAttrib2sARB(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib2svARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib2s
+
+VertexAttrib2svARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [2]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4190
+       alias           VertexAttrib2sv
+
+VertexAttrib3dARB(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib3dvARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib3d
+
+VertexAttrib3dvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [3]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4199
+       alias           VertexAttrib3dv
+
+VertexAttrib3fARB(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib3fvARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib3f
+
+VertexAttrib3fvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [3]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4195
+       alias           VertexAttrib3fv
+
+VertexAttrib3sARB(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       param           z               Int16 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib3svARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib3s
+
+VertexAttrib3svARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [3]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4191
+       alias           VertexAttrib3sv
+
+VertexAttrib4NbvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int8 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4Nbv
+
+VertexAttrib4NivARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4Niv
+
+VertexAttrib4NsvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4Nsv
+
+VertexAttrib4NubARB(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               UInt8 in value
+       param           y               UInt8 in value
+       param           z               UInt8 in value
+       param           w               UInt8 in value
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4Nub
+
+VertexAttrib4NubvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt8 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4201
+       alias           VertexAttrib4Nubv
+
+VertexAttrib4NuivARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4Nuiv
+
+VertexAttrib4NusvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt16 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4Nusv
+
+VertexAttrib4bvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int8 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4bv
+
+VertexAttrib4dARB(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib4dvARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4d
+
+VertexAttrib4dvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4200
+       alias           VertexAttrib4dv
+
+VertexAttrib4fARB(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib4fvARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4f
+
+VertexAttrib4fvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4196
+       alias           VertexAttrib4fv
+
+VertexAttrib4ivARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4iv
+
+VertexAttrib4sARB(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       param           z               Int16 in value
+       param           w               Int16 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     VertexAttrib4svARB
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4s
+
+VertexAttrib4svARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4192
+       alias           VertexAttrib4sv
+
+VertexAttrib4ubvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt8 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4ubv
+
+VertexAttrib4uivARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4uiv
+
+VertexAttrib4usvARB(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt16 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4usv
+
+VertexAttribPointerARB(index, size, type, normalized, stride, pointer)
+       return          void
+       param           index           UInt32 in value
+       param           size            Int32 in value
+       param           type            VertexAttribPointerTypeARB in value
+       param           normalized      Boolean in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride)] retained
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           VertexAttribPointer
+
+EnableVertexAttribArrayARB(index)
+       return          void
+       param           index           UInt32 in value
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           EnableVertexAttribArray
+
+DisableVertexAttribArrayARB(index)
+       return          void
+       param           index           UInt32 in value
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       alias           DisableVertexAttribArray
+
+ProgramStringARB(target, format, len, string)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           format          ProgramFormatARB in value
+       param           len             SizeI in value
+       param           string          Void in array [len]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          667
+
+BindProgramARB(target, program)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           program         UInt32 in value
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxropcode      4180
+       offset          579
+
+DeleteProgramsARB(n, programs)
+       return          void
+       param           n               SizeI in value
+       param           programs        UInt32 in array [n]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1294
+       offset          580
+
+GenProgramsARB(n, programs)
+       return          void
+       param           n               SizeI in value
+       param           programs        UInt32 out array [n]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1295
+       offset          582
+
+ProgramEnvParameter4dARB(target, index, x, y, z, w)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     ProgramEnvParameter4dvARB
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          668
+
+ProgramEnvParameter4dvARB(target, index, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           params          Float64 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          669
+
+ProgramEnvParameter4fARB(target, index, x, y, z, w)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     ProgramEnvParameter4fvARB
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          670
+
+ProgramEnvParameter4fvARB(target, index, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           params          Float32 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          671
+
+ProgramLocalParameter4dARB(target, index, x, y, z, w)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     ProgramLocalParameter4dvARB
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          672
+
+ProgramLocalParameter4dvARB(target, index, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           params          Float64 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          673
+
+ProgramLocalParameter4fARB(target, index, x, y, z, w)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        ARB_vertex_program
+       version         1.3
+       vectorequiv     ProgramLocalParameter4fvARB
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          674
+
+ProgramLocalParameter4fvARB(target, index, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           params          Float32 in array [4]
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          675
+
+GetProgramEnvParameterdvARB(target, index, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           params          Float64 out array [4]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          676
+
+GetProgramEnvParameterfvARB(target, index, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           params          Float32 out array [4]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          677
+
+GetProgramLocalParameterdvARB(target, index, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           params          Float64 out array [4]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          678
+
+GetProgramLocalParameterfvARB(target, index, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           params          Float32 out array [4]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          679
+
+GetProgramivARB(target, pname, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           pname           ProgramPropertyARB in value
+       param           params          Int32 out array [1]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          680
+
+GetProgramStringARB(target, pname, string)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           pname           ProgramStringPropertyARB in value
+       param           string          Void out array [COMPSIZE(target,pname)]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          681
+
+GetVertexAttribdvARB(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribPropertyARB in value
+       param           params          Float64 out array [4]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1301
+       alias           GetVertexAttribdv
+
+GetVertexAttribfvARB(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribPropertyARB in value
+       param           params          Float32 out array [4]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1302
+       alias           GetVertexAttribfv
+
+GetVertexAttribivARB(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribPropertyARB in value
+       param           params          Int32 out array [4]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1303
+       alias           GetVertexAttribiv
+
+GetVertexAttribPointervARB(index, pname, pointer)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribPointerPropertyARB in value
+       param           pointer         VoidPointer out array [1]
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       alias           GetVertexAttribPointerv
+
+IsProgramARB(program)
+       return          Boolean
+       param           program         UInt32 in value
+       dlflags         notlistable
+       category        ARB_vertex_program
+       version         1.3
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1304
+       alias           IsProgram
+
+
+###############################################################################
+#
+# ARB Extension #27
+# ARB_fragment_program commands
+#
+###############################################################################
+
+# All ARB_fragment_program entry points are shared with ARB_vertex_program,
+#   and are only included in that #define block, for now.
+newcategory: ARB_fragment_program
+passthru: /* All ARB_fragment_program entry points are shared with ARB_vertex_program. */
+
+###############################################################################
+#
+# ARB Extension #28
+# ARB_vertex_buffer_object commands
+#
+###############################################################################
+
+BindBufferARB(target, buffer)
+       return          void
+       param           target          BufferTargetARB in value
+       param           buffer          UInt32 in value
+       category        ARB_vertex_buffer_object
+       version         1.2
+       extension
+       alias           BindBuffer
+
+DeleteBuffersARB(n, buffers)
+       return          void
+       param           n               SizeI in value
+       param           buffers         ConstUInt32 in array [n]
+       category        ARB_vertex_buffer_object
+       version         1.2
+       extension
+       alias           DeleteBuffers
+
+GenBuffersARB(n, buffers)
+       return          void
+       param           n               SizeI in value
+       param           buffers         UInt32 out array [n]
+       category        ARB_vertex_buffer_object
+       version         1.2
+       extension
+       alias           GenBuffers
+
+IsBufferARB(buffer)
+       return          Boolean
+       param           buffer          UInt32 in value
+       category        ARB_vertex_buffer_object
+       version         1.2
+       extension
+       alias           IsBuffer
+
+BufferDataARB(target, size, data, usage)
+       return          void
+       param           target          BufferTargetARB in value
+       param           size            BufferSizeARB in value
+       param           data            ConstVoid in array [size]
+       param           usage           BufferUsageARB in value
+       category        ARB_vertex_buffer_object
+       version         1.2
+       extension
+       alias           BufferData
+
+BufferSubDataARB(target, offset, size, data)
+       return          void
+       param           target          BufferTargetARB in value
+       param           offset          BufferOffsetARB in value
+       param           size            BufferSizeARB in value
+       param           data            ConstVoid in array [size]
+       category        ARB_vertex_buffer_object
+       version         1.2
+       extension
+       alias           BufferSubData
+
+GetBufferSubDataARB(target, offset, size, data)
+       return          void
+       param           target          BufferTargetARB in value
+       param           offset          BufferOffsetARB in value
+       param           size            BufferSizeARB in value
+       param           data            Void out array [size]
+       category        ARB_vertex_buffer_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       alias           GetBufferSubData
+
+MapBufferARB(target, access)
+       return          VoidPointer
+       param           target          BufferTargetARB in value
+       param           access          BufferAccessARB in value
+       category        ARB_vertex_buffer_object
+       version         1.2
+       extension
+       alias           MapBuffer
+
+UnmapBufferARB(target)
+       return          Boolean
+       param           target          BufferTargetARB in value
+       category        ARB_vertex_buffer_object
+       version         1.2
+       extension
+       alias           UnmapBuffer
+
+GetBufferParameterivARB(target, pname, params)
+       return          void
+       param           target          BufferTargetARB in value
+       param           pname           BufferPNameARB in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        ARB_vertex_buffer_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       alias           GetBufferParameteriv
+
+GetBufferPointervARB(target, pname, params)
+       return          void
+       param           target          BufferTargetARB in value
+       param           pname           BufferPointerNameARB in value
+       param           params          VoidPointer out array [1]
+       category        ARB_vertex_buffer_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       alias           GetBufferPointerv
+
+###############################################################################
+#
+# ARB Extension #29
+# ARB_occlusion_query commands
+#
+###############################################################################
+
+GenQueriesARB(n, ids)
+       return          void
+       param           n               SizeI in value
+       param           ids             UInt32 out array [n]
+       category        ARB_occlusion_query
+       version         1.5
+       extension
+       alias           GenQueries
+
+DeleteQueriesARB(n, ids)
+       return          void
+       param           n               SizeI in value
+       param           ids             UInt32 in array [n]
+       category        ARB_occlusion_query
+       version         1.5
+       extension
+       alias           DeleteQueries
+
+IsQueryARB(id)
+       return          Boolean
+       param           id              UInt32 in value
+       category        ARB_occlusion_query
+       version         1.5
+       extension
+       alias           IsQuery
+
+BeginQueryARB(target, id)
+       return          void
+       param           target          GLenum in value
+       param           id              UInt32 in value
+       category        ARB_occlusion_query
+       version         1.5
+       extension
+       alias           BeginQuery
+
+EndQueryARB(target)
+       return          void
+       param           target          GLenum in value
+       category        ARB_occlusion_query
+       version         1.5
+       extension
+       alias           EndQuery
+
+GetQueryivARB(target, pname, params)
+       return          void
+       param           target          GLenum in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [pname]
+       category        ARB_occlusion_query
+       dlflags         notlistable
+       version         1.5
+       extension
+       alias           GetQueryiv
+
+GetQueryObjectivARB(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [pname]
+       category        ARB_occlusion_query
+       dlflags         notlistable
+       version         1.5
+       extension
+       alias           GetQueryObjectiv
+
+GetQueryObjectuivARB(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           GLenum in value
+       param           params          UInt32 out array [pname]
+       category        ARB_occlusion_query
+       dlflags         notlistable
+       version         1.5
+       extension
+       alias           GetQueryObjectuiv
+
+###############################################################################
+#
+# ARB Extension #30
+# ARB_shader_objects commands
+#
+###############################################################################
+
+DeleteObjectARB(obj)
+       return          void
+       param           obj             handleARB in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetHandleARB(pname)
+       return          handleARB
+       param           pname           GLenum in value
+       category        ARB_shader_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+DetachObjectARB(containerObj, attachedObj)
+       return          void
+       param           containerObj    handleARB in value
+       param           attachedObj     handleARB in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           DetachShader
+
+CreateShaderObjectARB(shaderType)
+       return          handleARB
+       param           shaderType      GLenum in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           CreateShader
+
+ShaderSourceARB(shaderObj, count, string, length)
+       return          void
+       param           shaderObj       handleARB in value
+       param           count           SizeI in value
+       param           string          charPointerARB in array [count]
+       param           length          Int32 in array [1]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           ShaderSource
+
+CompileShaderARB(shaderObj)
+       return          void
+       param           shaderObj       handleARB in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           CompileShader
+
+CreateProgramObjectARB()
+       return          handleARB
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           CreateProgram
+
+AttachObjectARB(containerObj, obj)
+       return          void
+       param           containerObj    handleARB in value
+       param           obj             handleARB in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           AttachShader
+
+LinkProgramARB(programObj)
+       return          void
+       param           programObj      handleARB in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           LinkProgram
+
+UseProgramObjectARB(programObj)
+       return          void
+       param           programObj      handleARB in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           UseProgram
+
+ValidateProgramARB(programObj)
+       return          void
+       param           programObj      handleARB in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           ValidateProgram
+
+Uniform1fARB(location, v0)
+       return          void
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform1f
+
+Uniform2fARB(location, v0, v1)
+       return          void
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       param           v1              Float32 in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform2f
+
+Uniform3fARB(location, v0, v1, v2)
+       return          void
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       param           v1              Float32 in value
+       param           v2              Float32 in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform3f
+
+Uniform4fARB(location, v0, v1, v2, v3)
+       return          void
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       param           v1              Float32 in value
+       param           v2              Float32 in value
+       param           v3              Float32 in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform4f
+
+Uniform1iARB(location, v0)
+       return          void
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform1i
+
+Uniform2iARB(location, v0, v1)
+       return          void
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       param           v1              Int32 in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform2i
+
+Uniform3iARB(location, v0, v1, v2)
+       return          void
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       param           v1              Int32 in value
+       param           v2              Int32 in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform3i
+
+Uniform4iARB(location, v0, v1, v2, v3)
+       return          void
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       param           v1              Int32 in value
+       param           v2              Int32 in value
+       param           v3              Int32 in value
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform4i
+
+Uniform1fvARB(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform1fv
+
+Uniform2fvARB(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform2fv
+
+Uniform3fvARB(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform3fv
+
+Uniform4fvARB(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform4fv
+
+Uniform1ivARB(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform1iv
+
+Uniform2ivARB(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform2iv
+
+Uniform3ivARB(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform3iv
+
+Uniform4ivARB(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           Uniform4iv
+
+UniformMatrix2fvARB(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           UniformMatrix2fv
+
+UniformMatrix3fvARB(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           UniformMatrix3fv
+
+UniformMatrix4fvARB(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count]
+       category        ARB_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           UniformMatrix4fv
+
+GetObjectParameterfvARB(obj, pname, params)
+       return          void
+       param           obj             handleARB in value
+       param           pname           GLenum in value
+       param           params          Float32 out array [pname]
+       category        ARB_shader_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetObjectParameterivARB(obj, pname, params)
+       return          void
+       param           obj             handleARB in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [pname]
+       category        ARB_shader_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetInfoLogARB(obj, maxLength, length, infoLog)
+       return          void
+       param           obj             handleARB in value
+       param           maxLength       SizeI in value
+       param           length          SizeI out array [1]
+       param           infoLog         charARB out array [length]
+       category        ARB_shader_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetAttachedObjectsARB(containerObj, maxCount, count, obj)
+       return          void
+       param           containerObj    handleARB in value
+       param           maxCount        SizeI in value
+       param           count           SizeI out array [1]
+       param           obj             handleARB out array [count]
+       category        ARB_shader_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       alias           GetAttachedShaders
+
+GetUniformLocationARB(programObj, name)
+       return          Int32
+       param           programObj      handleARB in value
+       param           name            charARB in array []
+       category        ARB_shader_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       alias           GetUniformLocation
+
+GetActiveUniformARB(programObj, index, maxLength, length, size, type, name)
+       return          void
+       param           programObj      handleARB in value
+       param           index           UInt32 in value
+       param           maxLength       SizeI in value
+       param           length          SizeI out array [1]
+       param           size            Int32 out array [1]
+       param           type            GLenum out array [1]
+       param           name            charARB out array []
+       category        ARB_shader_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       alias           GetActiveUniform
+
+GetUniformfvARB(programObj, location, params)
+       return          void
+       param           programObj      handleARB in value
+       param           location        Int32 in value
+       param           params          Float32 out array [location]
+       category        ARB_shader_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       alias           GetUniformfv
+
+GetUniformivARB(programObj, location, params)
+       return          void
+       param           programObj      handleARB in value
+       param           location        Int32 in value
+       param           params          Int32 out array [location]
+       category        ARB_shader_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       alias           GetUniformiv
+
+GetShaderSourceARB(obj, maxLength, length, source)
+       return          void
+       param           obj             handleARB in value
+       param           maxLength       SizeI in value
+       param           length          SizeI out array [1]
+       param           source          charARB out array [length]
+       category        ARB_shader_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       alias           GetShaderSource
+
+
+###############################################################################
+#
+# ARB Extension #31
+# ARB_vertex_shader commands
+#
+###############################################################################
+
+BindAttribLocationARB(programObj, index, name)
+       return          void
+       param           programObj      handleARB in value
+       param           index           UInt32 in value
+       param           name            charARB in array []
+       category        ARB_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           BindAttribLocation
+
+GetActiveAttribARB(programObj, index, maxLength, length, size, type, name)
+       return          void
+       param           programObj      handleARB in value
+       param           index           UInt32 in value
+       param           maxLength       SizeI in value
+       param           length          SizeI out array [1]
+       param           size            Int32 out array [1]
+       param           type            GLenum out array [1]
+       param           name            charARB out array []
+       category        ARB_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       alias           GetActiveAttrib
+
+GetAttribLocationARB(programObj, name)
+       return          Int32
+       param           programObj      handleARB in value
+       param           name            charARB in array []
+       category        ARB_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       alias           GetAttribLocation
+
+###############################################################################
+#
+# ARB Extension #32
+# ARB_fragment_shader commands
+#
+###############################################################################
+
+#  (none)
+newcategory: ARB_fragment_shader
+
+###############################################################################
+#
+# ARB Extension #33
+# ARB_shading_language_100 commands
+#
+###############################################################################
+
+#  (none)
+newcategory: ARB_shading_language_100
+
+###############################################################################
+#
+# ARB Extension #34
+# ARB_texture_non_power_of_two commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_non_power_of_two
+
+###############################################################################
+#
+# ARB Extension #35
+# ARB_point_sprite commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_point_sprite
+
+###############################################################################
+#
+# ARB Extension #36
+# ARB_fragment_program_shadow commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_fragment_program_shadow
+
+###############################################################################
+#
+# ARB Extension #37
+# ARB_draw_buffers commands
+#
+###############################################################################
+
+DrawBuffersARB(n, bufs)
+       return          void
+       param           n               SizeI in value
+       param           bufs            DrawBufferModeATI in array [n]
+       category        ARB_draw_buffers
+       version         1.5
+       extension
+       alias           DrawBuffers
+
+###############################################################################
+#
+# ARB Extension #38
+# ARB_texture_rectangle commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_rectangle
+
+###############################################################################
+#
+# ARB Extension #39
+# ARB_color_buffer_float commands
+#
+###############################################################################
+
+ClampColorARB(target, clamp)
+       return          void
+       param           target          ClampColorTargetARB in value
+       param           clamp           ClampColorModeARB in value
+       category        ARB_color_buffer_float
+       version         1.5
+       extension
+       glxropcode      234
+       glxflags        ignore
+       alias           ClampColor
+
+###############################################################################
+#
+# ARB Extension #40
+# ARB_half_float_pixel commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_half_float_pixel
+
+###############################################################################
+#
+# ARB Extension #41
+# ARB_texture_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_float
+
+###############################################################################
+#
+# ARB Extension #42
+# ARB_pixel_buffer_object commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_pixel_buffer_object
+
+###############################################################################
+#
+# ARB Extension #43
+# ARB_depth_buffer_float commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_depth_buffer_float
+
+###############################################################################
+#
+# ARB Extension #44
+# ARB_draw_instanced commands
+#
+###############################################################################
+
+DrawArraysInstancedARB(mode, first, count, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           first           Int32 in value
+       param           count           SizeI in value
+       param           primcount       SizeI in value
+       category        ARB_draw_instanced
+       version         2.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       vectorequiv     ArrayElement
+       glfflags        ignore
+       glxflags        ignore
+       alias           DrawArraysInstanced
+
+DrawElementsInstancedARB(mode, count, type, indices, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           count           SizeI in value
+       param           type            DrawElementsType in value
+       param           indices         Void in array [COMPSIZE(count/type)]
+       param           primcount       SizeI in value
+       category        ARB_draw_instanced
+       version         2.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       vectorequiv     ArrayElement
+       glfflags        ignore
+       glxflags        ignore
+       alias           DrawElementsInstanced
+
+###############################################################################
+#
+# ARB Extension #45
+# ARB_framebuffer_object commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# Promoted from EXT_framebuffer_object
+IsRenderbuffer(renderbuffer)
+       return          Boolean
+       param           renderbuffer    UInt32 in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxvendorpriv   1422
+       glxflags        ignore
+       offset          ?
+
+BindRenderbuffer(target, renderbuffer)
+       return          void
+       param           target          RenderbufferTarget in value
+       param           renderbuffer    UInt32 in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxropcode      4316
+       glxflags        ignore
+       offset          ?
+
+DeleteRenderbuffers(n, renderbuffers)
+       return          void
+       param           n               SizeI in value
+       param           renderbuffers   UInt32 in array [n]
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxropcode      4317
+       glxflags        ignore
+       offset          ?
+
+GenRenderbuffers(n, renderbuffers)
+       return          void
+       param           n               SizeI in value
+       param           renderbuffers   UInt32 out array [n]
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxvendorpriv   1423
+       glxflags        ignore
+       offset          ?
+
+RenderbufferStorage(target, internalformat, width, height)
+       return          void
+       param           target          RenderbufferTarget in value
+       param           internalformat  GLenum in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxropcode      4318
+       glxflags        ignore
+       offset          ?
+
+GetRenderbufferParameteriv(target, pname, params)
+       return          void
+       param           target          RenderbufferTarget in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        ARB_framebuffer_object
+       dlflags         notlistable
+       version         3.0
+       extension
+       glxvendorpriv   1424
+       glxflags        ignore
+       offset          ?
+
+IsFramebuffer(framebuffer)
+       return          Boolean
+       param           framebuffer     UInt32 in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxvendorpriv   1425
+       glxflags        ignore
+       offset          ?
+
+BindFramebuffer(target, framebuffer)
+       return          void
+       param           target          FramebufferTarget in value
+       param           framebuffer     UInt32 in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxropcode      4319
+       glxflags        ignore
+       offset          ?
+
+DeleteFramebuffers(n, framebuffers)
+       return          void
+       param           n               SizeI in value
+       param           framebuffers    UInt32 in array [n]
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxropcode      4320
+       glxflags        ignore
+       offset          ?
+
+GenFramebuffers(n, framebuffers)
+       return          void
+       param           n               SizeI in value
+       param           framebuffers    UInt32 out array [n]
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxvendorpriv   1426
+       glxflags        ignore
+       offset          ?
+
+CheckFramebufferStatus(target)
+       return          GLenum
+       param           target          FramebufferTarget in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxvendorpriv   1427
+       glxflags        ignore
+       offset          ?
+
+FramebufferTexture1D(target, attachment, textarget, texture, level)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           textarget       GLenum in value
+       param           texture         UInt32 in value
+       param           level           Int32 in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxropcode      4321
+       glxflags        ignore
+       offset          ?
+
+FramebufferTexture2D(target, attachment, textarget, texture, level)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           textarget       GLenum in value
+       param           texture         UInt32 in value
+       param           level           Int32 in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxropcode      4322
+       glxflags        ignore
+       offset          ?
+
+FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           textarget       GLenum in value
+       param           texture         UInt32 in value
+       param           level           Int32 in value
+       param           zoffset         Int32 in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxropcode      4323
+       glxflags        ignore
+       offset          ?
+
+FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           renderbuffertarget      RenderbufferTarget in value
+       param           renderbuffer    UInt32 in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxropcode      4324
+       glxflags        ignore
+       offset          ?
+
+GetFramebufferAttachmentParameteriv(target, attachment, pname, params)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        ARB_framebuffer_object
+       dlflags         notlistable
+       version         3.0
+       extension
+       glxvendorpriv   1428
+       glxflags        ignore
+       offset          ?
+
+GenerateMipmap(target)
+       return          void
+       param           target          GLenum in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension
+       glxropcode      4325
+       glxflags        ignore
+       offset          ?
+
+# Promoted from EXT_framebuffer_blit
+BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
+       return          void
+       param           srcX0           Int32 in value
+       param           srcY0           Int32 in value
+       param           srcX1           Int32 in value
+       param           srcY1           Int32 in value
+       param           dstX0           Int32 in value
+       param           dstY0           Int32 in value
+       param           dstX1           Int32 in value
+       param           dstY1           Int32 in value
+       param           mask            ClearBufferMask in value
+       param           filter          GLenum in value
+       category        ARB_framebuffer_object
+       version         3.0
+       glxropcode      4330
+       offset          ?
+
+# Promoted from EXT_framebuffer_multisample
+RenderbufferStorageMultisample(target, samples, internalformat, width, height)
+       return          void
+       param           target          GLenum in value
+       param           samples         SizeI in value
+       param           internalformat  GLenum in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        ARB_framebuffer_object
+       version         3.0
+       glxropcode      4331
+       offset          ?
+
+# Promoted from ARB_geometry_shader4
+FramebufferTextureLayer(target, attachment, texture, level, layer)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       param           layer           CheckedInt32 in value
+       category        ARB_framebuffer_object
+       version         3.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+
+
+###############################################################################
+#
+# ARB Extension #46
+# ARB_framebuffer_sRGB commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_framebuffer_sRGB
+
+###############################################################################
+#
+# ARB Extension #47
+# ARB_geometry_shader4 commands
+#
+###############################################################################
+
+ProgramParameteriARB(program, pname, value)
+       return          void
+       param           program         UInt32 in value
+       param           pname           ProgramParameterPName in value
+       param           value           Int32 in value
+       category        ARB_geometry_shader4
+       version         3.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+
+FramebufferTextureARB(target, attachment, texture, level)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       category        ARB_geometry_shader4
+       version         3.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+
+FramebufferTextureLayerARB(target, attachment, texture, level, layer)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       param           layer           CheckedInt32 in value
+       category        ARB_geometry_shader4
+       version         3.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       alias           FramebufferTextureLayer
+
+FramebufferTextureFaceARB(target, attachment, texture, level, face)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       param           face            TextureTarget in value
+       category        ARB_geometry_shader4
+       version         3.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+
+###############################################################################
+#
+# ARB Extension #48
+# ARB_half_float_vertex commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_half_float_vertex
+
+###############################################################################
+#
+# ARB Extension #49
+# ARB_instanced_arrays commands
+#
+###############################################################################
+
+VertexAttribDivisorARB(index, divisor)
+       return          void
+       param           index           UInt32 in value
+       param           divisor         UInt32 in value
+       category        ARB_instanced_arrays
+       version         2.0
+       extension
+       glfflags        ignore
+       glxflags        ignore
+
+###############################################################################
+#
+# ARB Extension #50
+# ARB_map_buffer_range commands (also OpenGL 3.0)
+#
+###############################################################################
+
+MapBufferRange(target, offset, length, access)
+       return          VoidPointer
+       param           target          BufferTargetARB in value
+       param           offset          BufferOffset in value
+       param           length          BufferSize in value
+       param           access          BufferAccessMask in value
+       category        ARB_map_buffer_range
+       version         3.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+# Promoted from APPLE_flush_buffer_range
+FlushMappedBufferRange(target, offset, length)
+       return          void
+       param           target          BufferTargetARB in value
+       param           offset          BufferOffset in value
+       param           length          BufferSize in value
+       category        ARB_map_buffer_range
+       version         3.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #51
+# ARB_texture_buffer_object commands
+#
+###############################################################################
+
+TexBufferARB(target, internalformat, buffer)
+       return          void
+       param           target          TextureTarget in value
+       param           internalformat  GLenum in value
+       param           buffer          UInt32 in value
+       category        ARB_texture_buffer_object
+       version         3.0
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       alias           TexBuffer
+
+###############################################################################
+#
+# ARB Extension #52
+# ARB_texture_compression_rgtc commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_compression_rgtc
+
+###############################################################################
+#
+# ARB Extension #53
+# ARB_texture_rg commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_rg
+
+###############################################################################
+#
+# ARB Extension #54
+# ARB_vertex_array_object commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# Promoted from APPLE_vertex_array_object
+BindVertexArray(array)
+       return          void
+       param           array           UInt32 in value
+       category        ARB_vertex_array_object
+       version         3.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DeleteVertexArrays(n, arrays)
+       return          void
+       param           n               SizeI in value
+       param           arrays          UInt32 in array [n]
+       category        ARB_vertex_array_object
+       version         3.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GenVertexArrays(n, arrays)
+       return          void
+       param           n               SizeI in value
+       param           arrays          UInt32 out array [n]
+       category        ARB_vertex_array_object
+       version         3.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsVertexArray(array)
+       return          Boolean
+       param           array           UInt32 in value
+       category        ARB_vertex_array_object
+       version         3.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #55 - WGL_ARB_create_context
+# ARB Extension #56 - GLX_ARB_create_context
+#
+###############################################################################
+
+###############################################################################
+#
+# ARB Extension #57
+# ARB_uniform_buffer_object commands
+#
+###############################################################################
+
+GetUniformIndices(program, uniformCount, uniformNames, uniformIndices)
+       return          void
+       param           program         UInt32 in value
+       param           uniformCount    SizeI in value
+       param           uniformNames    CharPointer in array [COMPSIZE(uniformCount)]
+       param           uniformIndices  UInt32 out array [COMPSIZE(uniformCount)]
+       category        ARB_uniform_buffer_object
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params)
+       return          void
+       param           program         UInt32 in value
+       param           uniformCount    SizeI in value
+       param           uniformIndices  UInt32 in array [COMPSIZE(uniformCount)]
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        ARB_uniform_buffer_object
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName)
+       return          void
+       param           program         UInt32 in value
+       param           uniformIndex    UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           uniformName     Char out array [bufSize]
+       category        ARB_uniform_buffer_object
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetUniformBlockIndex(program, uniformBlockName)
+       return          UInt32
+       param           program         UInt32 in value
+       param           uniformBlockName        Char in array [COMPSIZE()]
+       category        ARB_uniform_buffer_object
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params)
+       return          void
+       param           program         UInt32 in value
+       param           uniformBlockIndex       UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        ARB_uniform_buffer_object
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName)
+       return          void
+       param           program         UInt32 in value
+       param           uniformBlockIndex       UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           uniformBlockName        Char out array [bufSize]
+       category        ARB_uniform_buffer_object
+       dlflags         notlistable
+       version         2.0
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding)
+       return          void
+       param           program         UInt32 in value
+       param           uniformBlockIndex       UInt32 in value
+       param           uniformBlockBinding     UInt32 in value
+       category        ARB_uniform_buffer_object
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+
+###############################################################################
+#
+# ARB Extension #58
+# ARB_compatibility commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_compatibility
+
+###############################################################################
+#
+# ARB Extension #59
+# ARB_copy_buffer commands
+#
+###############################################################################
+
+CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size)
+       return          void
+       param           readTarget      GLenum in value
+       param           writeTarget     GLenum in value
+       param           readOffset      BufferOffset in value
+       param           writeOffset     BufferOffset in value
+       param           size            BufferSize in value
+       category        ARB_copy_buffer
+       version         3.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #60
+# ARB_shader_texture_lod commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_shader_texture_lod
+
+###############################################################################
+#
+# ARB Extension #61
+# ARB_depth_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_depth_clamp
+
+###############################################################################
+#
+# ARB Extension #62
+# ARB_draw_elements_base_vertex commands
+#
+###############################################################################
+
+DrawElementsBaseVertex(mode, count, type, indices, basevertex)
+       return          void
+       param           mode            GLenum in value
+       param           count           SizeI in value
+       param           type            DrawElementsType in value
+       param           indices         Void in array [COMPSIZE(count/type)]
+       param           basevertex      Int32 in value
+       category        ARB_draw_elements_base_vertex
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex)
+       return          void
+       param           mode            GLenum in value
+       param           start           UInt32 in value
+       param           end             UInt32 in value
+       param           count           SizeI in value
+       param           type            DrawElementsType in value
+       param           indices         Void in array [COMPSIZE(count/type)]
+       param           basevertex      Int32 in value
+       category        ARB_draw_elements_base_vertex
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DrawElementsInstancedBaseVertex(mode, count, type, indices, primcount, basevertex)
+       return          void
+       param           mode            GLenum in value
+       param           count           SizeI in value
+       param           type            DrawElementsType in value
+       param           indices         Void in array [COMPSIZE(count/type)]
+       param           primcount       SizeI in value
+       param           basevertex      Int32 in value
+       category        ARB_draw_elements_base_vertex
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiDrawElementsBaseVertex(mode, count, type, indices, primcount, basevertex)
+       return          void
+       param           mode            GLenum in value
+       param           count           SizeI in array [COMPSIZE(primcount)]
+       param           type            DrawElementsType in value
+       param           indices         VoidPointer in array [COMPSIZE(primcount)]
+       param           primcount       SizeI in value
+       param           basevertex      Int32 in array [COMPSIZE(primcount)]
+       category        ARB_draw_elements_base_vertex
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #63
+# ARB_fragment_coord_conventions commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_fragment_coord_conventions
+
+###############################################################################
+#
+# ARB Extension #64
+# ARB_provoking_vertex commands
+#
+###############################################################################
+
+ProvokingVertex(mode)
+       return          void
+       param           mode            GLenum in value
+       category        ARB_provoking_vertex
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #65
+# ARB_seamless_cube_map commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_seamless_cube_map
+
+###############################################################################
+#
+# ARB Extension #66
+# ARB_sync commands
+#
+###############################################################################
+
+FenceSync(condition, flags)
+       return          sync
+       param           condition       GLenum in value
+       param           flags           GLbitfield in value
+       category        ARB_sync
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsSync(sync)
+       return          Boolean
+       param           sync            sync in value
+       category        ARB_sync
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DeleteSync(sync)
+       return          void
+       param           sync            sync in value
+       category        ARB_sync
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ClientWaitSync(sync, flags, timeout)
+       return          GLenum
+       param           sync            sync in value
+       param           flags           GLbitfield in value
+       param           timeout         UInt64 in value
+       category        ARB_sync
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+WaitSync(sync, flags, timeout)
+       return          void
+       param           sync            sync in value
+       param           flags           GLbitfield in value
+       param           timeout         UInt64 in value
+       category        ARB_sync
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetInteger64v(pname, params)
+       return          void
+       param           pname           GLenum in value
+       param           params          Int64 out array [COMPSIZE(pname)]
+       category        ARB_sync
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetSynciv(sync, pname, bufSize, length, values)
+       return          void
+       param           sync            sync in value
+       param           pname           GLenum in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           values          Int32 out array [length]
+       category        ARB_sync
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #67
+# ARB_texture_multisample commands
+#
+###############################################################################
+
+TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations)
+       return          void
+       param           target          GLenum in value
+       param           samples         SizeI in value
+       param           internalformat  Int32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           fixedsamplelocations    Boolean in value
+       category        ARB_texture_multisample
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations)
+       return          void
+       param           target          GLenum in value
+       param           samples         SizeI in value
+       param           internalformat  Int32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           fixedsamplelocations    Boolean in value
+       category        ARB_texture_multisample
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetMultisamplefv(pname, index, val)
+       return          void
+       param           pname           GLenum in value
+       param           index           UInt32 in value
+       param           val             Float32 out array [COMPSIZE(pname)]
+       category        ARB_texture_multisample
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+SampleMaski(index, mask)
+       return          void
+       param           index           UInt32 in value
+       param           mask            GLbitfield in value
+       category        ARB_texture_multisample
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #68
+# ARB_vertex_array_bgra commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_vertex_array_bgra
+
+###############################################################################
+#
+# ARB Extension #69
+# ARB_draw_buffers_blend commands
+#
+###############################################################################
+
+@@@ Add ARB suffixes here & functions!
+BlendEquationi(buf, mode)
+       return          void
+       param           buf             UInt32 in value
+       param           mode            GLenum in value
+       category        ARB_draw_buffers_blend
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BlendEquationSeparatei(buf, modeRGB, modeAlpha)
+       return          void
+       param           buf             UInt32 in value
+       param           modeRGB         GLenum in value
+       param           modeAlpha       GLenum in value
+       category        ARB_draw_buffers_blend
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BlendFunci(buf, src, dst)
+       return          void
+       param           buf             UInt32 in value
+       param           src             GLenum in value
+       param           dst             GLenum in value
+       category        ARB_draw_buffers_blend
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)
+       return          void
+       param           buf             UInt32 in value
+       param           srcRGB          GLenum in value
+       param           dstRGB          GLenum in value
+       param           srcAlpha        GLenum in value
+       param           dstAlpha        GLenum in value
+       category        ARB_draw_buffers_blend
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #70
+# ARB_sample_shading commands
+#
+###############################################################################
+
+@@@ Add ARB suffixes here & functions!
+MinSampleShading(value)
+       return          void
+       param           value           ClampedColorF in value
+       category        ARB_sample_shading
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #71
+# ARB_texture_cube_map_array commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_cube_map_array
+
+###############################################################################
+#
+# ARB Extension #72
+# ARB_texture_gather commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_gather
+
+###############################################################################
+#
+# ARB Extension #73
+# ARB_texture_query_lod commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_query_lod
+
+###############################################################################
+#
+# ARB Extension #74 - WGL_ARB_create_context_profile
+# ARB Extension #75 - GLX_ARB_create_context_profile
+#
+###############################################################################
+
+###############################################################################
+#
+# ARB Extension #76
+# ARB_shading_language_include commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+NamedStringARB(type, namelen, name, stringlen, string)
+       return          void
+       param           type            GLenum in value
+       param           namelen         Int32 in value
+       param           name            Char in array [namelen]
+       param           stringlen       Int32 in value
+       param           string          Char in array [stringlen]
+       category        ARB_shading_language_include
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DeleteNamedStringARB(namelen, name)
+       return          void
+       param           namelen         Int32 in value
+       param           name            Char in array [namelen]
+       category        ARB_shading_language_include
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+CompileShaderIncludeARB(shader, count, path, length)
+       return          void
+       param           shader          UInt32 in value
+       param           count           SizeI in value
+       param           path            CharPointer in array [count]
+       param           length          Int32 in array [count]
+       category        ARB_shading_language_include
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsNamedStringARB(namelen, name)
+       return          Boolean
+       param           namelen         Int32 in value
+       param           name            Char in array [namelen]
+       category        ARB_shading_language_include
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetNamedStringARB(namelen, name, bufSize, stringlen, string)
+       return          void
+       param           namelen         Int32 in value
+       param           name            Char in array [namelen]
+       param           bufSize         SizeI in value
+       param           stringlen       Int32 out array [1]
+       param           string          Char out array [bufSize]
+       category        ARB_shading_language_include
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetNamedStringivARB(namelen, name, pname, params)
+       return          void
+       param           namelen         Int32 in value
+       param           name            Char in array [namelen]
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        ARB_shading_language_include
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #77
+# ARB_texture_compression_bptc commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #78
+# ARB_blend_func_extended commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+BindFragDataLocationIndexed(program, colorNumber, index, name)
+       return          void
+       param           program         UInt32 in value
+       param           colorNumber     UInt32 in value
+       param           index           UInt32 in value
+       param           name            Char in array []
+       category        ARB_blend_func_extended
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetFragDataIndex(program, name)
+       return          Int32
+       param           program         UInt32 in value
+       param           name            Char in array []
+       category        ARB_blend_func_extended
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #79
+# ARB_explicit_attrib_location commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #80
+# ARB_occlusion_query2 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #81
+# ARB_sampler_objects commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+GenSamplers(count, samplers)
+       return          void
+       param           count           SizeI in value
+       param           samplers        UInt32 out array [count]
+       category        ARB_sampler_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DeleteSamplers(count, samplers)
+       return          void
+       param           count           SizeI in value
+       param           samplers        UInt32 in array [count]
+       category        ARB_sampler_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsSampler(sampler)
+       return          Boolean
+       param           sampler         UInt32 in value
+       category        ARB_sampler_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindSampler(unit, sampler)
+       return          void
+       param           unit            GLenum in value
+       param           sampler         UInt32 in value
+       category        ARB_sampler_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SamplerParameteri(sampler, pname, param)
+       return          void
+       param           sampler         UInt32 in value
+       param           pname           GLenum in value
+       param           param           Int32 in value
+       category        ARB_sampler_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SamplerParameteriv(sampler, pname, param)
+       return          void
+       param           sampler         UInt32 in value
+       param           pname           GLenum in value
+       param           param           Int32 in array [COMPSIZE(pname)]
+       category        ARB_sampler_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SamplerParameterf(sampler, pname, param)
+       return          void
+       param           sampler         UInt32 in value
+       param           pname           GLenum in value
+       param           param           Float32 in value
+       category        ARB_sampler_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SamplerParameterfv(sampler, pname, param)
+       return          void
+       param           sampler         UInt32 in value
+       param           pname           GLenum in value
+       param           param           Float32 in array [COMPSIZE(pname)]
+       category        ARB_sampler_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SamplerParameterIiv(sampler, pname, param)
+       return          void
+       param           sampler         UInt32 in value
+       param           pname           GLenum in value
+       param           param           Int32 in array [COMPSIZE(pname)]
+       category        ARB_sampler_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SamplerParameterIuiv(sampler, pname, param)
+       return          void
+       param           sampler         UInt32 in value
+       param           pname           GLenum in value
+       param           param           UInt32 in array [COMPSIZE(pname)]
+       category        ARB_sampler_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetSamplerParameteriv(sampler, pname, params)
+       return          void
+       param           sampler         UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        ARB_sampler_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetSamplerParameterIiv(sampler, pname, params)
+       return          void
+       param           sampler         UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        ARB_sampler_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetSamplerParameterfv(sampler, pname, params)
+       return          void
+       param           sampler         UInt32 in value
+       param           pname           GLenum in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        ARB_sampler_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetSamplerParameterIfv(sampler, pname, params)
+       return          void
+       param           sampler         UInt32 in value
+       param           pname           GLenum in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        ARB_sampler_objects
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #82
+# ARB_shader_bit_encoding commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #83
+# ARB_texture_rgb10_a2ui commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #84
+# ARB_texture_swizzle commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #85
+# ARB_timer_query commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+QueryCounter(id, target)
+       return          void
+       param           id              UInt32 in value
+       param           target          GLenum in value
+       category        ARB_timer_query
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetQueryObjecti64v(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int64 out array [COMPSIZE(pname)]
+       category        ARB_timer_query
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetQueryObjectui64v(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           GLenum in value
+       param           params          UInt64 out array [COMPSIZE(pname)]
+       category        ARB_timer_query
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #86
+# ARB_vertex_type_2_10_10_10_rev commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+VertexP2ui(type, value)
+       return          void
+       param           type            GLenum in value
+       param           value           UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexP2uiv(type, value)
+       return          void
+       param           type            GLenum in value
+       param           value           UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexP3ui(type, value)
+       return          void
+       param           type            GLenum in value
+       param           value           UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexP3uiv(type, value)
+       return          void
+       param           type            GLenum in value
+       param           value           UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexP4ui(type, value)
+       return          void
+       param           type            GLenum in value
+       param           value           UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexP4uiv(type, value)
+       return          void
+       param           type            GLenum in value
+       param           value           UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoordP1ui(type, coords)
+       return          void
+       param           type            GLenum in value
+       param           coords          UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoordP1uiv(type, coords)
+       return          void
+       param           type            GLenum in value
+       param           coords          UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoordP2ui(type, coords)
+       return          void
+       param           type            GLenum in value
+       param           coords          UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoordP2uiv(type, coords)
+       return          void
+       param           type            GLenum in value
+       param           coords          UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoordP3ui(type, coords)
+       return          void
+       param           type            GLenum in value
+       param           coords          UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoordP3uiv(type, coords)
+       return          void
+       param           type            GLenum in value
+       param           coords          UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoordP4ui(type, coords)
+       return          void
+       param           type            GLenum in value
+       param           coords          UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoordP4uiv(type, coords)
+       return          void
+       param           type            GLenum in value
+       param           coords          UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoordP1ui(texture, type, coords)
+       return          void
+       param           texture         GLenum in value
+       param           type            GLenum in value
+       param           coords          UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoordP1uiv(texture, type, coords)
+       return          void
+       param           texture         GLenum in value
+       param           type            GLenum in value
+       param           coords          UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoordP2ui(texture, type, coords)
+       return          void
+       param           texture         GLenum in value
+       param           type            GLenum in value
+       param           coords          UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoordP2uiv(texture, type, coords)
+       return          void
+       param           texture         GLenum in value
+       param           type            GLenum in value
+       param           coords          UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoordP3ui(texture, type, coords)
+       return          void
+       param           texture         GLenum in value
+       param           type            GLenum in value
+       param           coords          UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoordP3uiv(texture, type, coords)
+       return          void
+       param           texture         GLenum in value
+       param           type            GLenum in value
+       param           coords          UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoordP4ui(texture, type, coords)
+       return          void
+       param           texture         GLenum in value
+       param           type            GLenum in value
+       param           coords          UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoordP4uiv(texture, type, coords)
+       return          void
+       param           texture         GLenum in value
+       param           type            GLenum in value
+       param           coords          UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalP3ui(type, coords)
+       return          void
+       param           type            GLenum in value
+       param           coords          UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalP3uiv(type, coords)
+       return          void
+       param           type            GLenum in value
+       param           coords          UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ColorP3ui(type, color)
+       return          void
+       param           type            GLenum in value
+       param           color           UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ColorP3uiv(type, color)
+       return          void
+       param           type            GLenum in value
+       param           color           UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ColorP4ui(type, color)
+       return          void
+       param           type            GLenum in value
+       param           color           UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ColorP4uiv(type, color)
+       return          void
+       param           type            GLenum in value
+       param           color           UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SecondaryColorP3ui(type, color)
+       return          void
+       param           type            GLenum in value
+       param           color           UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SecondaryColorP3uiv(type, color)
+       return          void
+       param           type            GLenum in value
+       param           color           UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribP1ui(index, type, normalized, value)
+       return          void
+       param           index           UInt32 in value
+       param           type            GLenum in value
+       param           normalized      Boolean in value
+       param           value           UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribP1uiv(index, type, normalized, value)
+       return          void
+       param           index           UInt32 in value
+       param           type            GLenum in value
+       param           normalized      Boolean in value
+       param           value           UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribP2ui(index, type, normalized, value)
+       return          void
+       param           index           UInt32 in value
+       param           type            GLenum in value
+       param           normalized      Boolean in value
+       param           value           UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribP2uiv(index, type, normalized, value)
+       return          void
+       param           index           UInt32 in value
+       param           type            GLenum in value
+       param           normalized      Boolean in value
+       param           value           UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribP3ui(index, type, normalized, value)
+       return          void
+       param           index           UInt32 in value
+       param           type            GLenum in value
+       param           normalized      Boolean in value
+       param           value           UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribP3uiv(index, type, normalized, value)
+       return          void
+       param           index           UInt32 in value
+       param           type            GLenum in value
+       param           normalized      Boolean in value
+       param           value           UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribP4ui(index, type, normalized, value)
+       return          void
+       param           index           UInt32 in value
+       param           type            GLenum in value
+       param           normalized      Boolean in value
+       param           value           UInt32 in value
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribP4uiv(index, type, normalized, value)
+       return          void
+       param           index           UInt32 in value
+       param           type            GLenum in value
+       param           normalized      Boolean in value
+       param           value           UInt32 in array [1]
+       category        ARB_vertex_type_2_10_10_10_rev
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #87
+# ARB_draw_indirect commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+DrawArraysIndirect(mode, indirect)
+       return          void
+       param           mode            GLenum in value
+       param           indirect        Void in array []
+       category        ARB_draw_indirect
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DrawElementsIndirect(mode, type, indirect)
+       return          void
+       param           mode            GLenum in value
+       param           type            GLenum in value
+       param           indirect        Void in array []
+       category        ARB_draw_indirect
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #88
+# ARB_gpu_shader5 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #89
+# ARB_gpu_shader_fp64 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+Uniform1d(location, x)
+       return          void
+       param           location        Int32 in value
+       param           x               Float64 in value
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform2d(location, x, y)
+       return          void
+       param           location        Int32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform3d(location, x, y, z)
+       return          void
+       param           location        Int32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform4d(location, x, y, z, w)
+       return          void
+       param           location        Int32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform1dv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform2dv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform3dv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniform4dv(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix2dv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix3dv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix4dv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix2x3dv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix2x4dv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix3x2dv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix3x4dv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix4x2dv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UniformMatrix4x3dv(location, count, transpose, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetUniformdv(program, location, params)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           params          Float64 out array [location]
+       category        ARB_gpu_shader_fp64
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniform1dEXT(program, location, x)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           x               Float64 in value
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniform2dEXT(program, location, x, y)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniform3dEXT(program, location, x, y, z)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniform4dEXT(program, location, x, y, z, w)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniform1dvEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniform2dvEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniform3dvEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniform4dvEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformMatrix2dvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformMatrix3dvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformMatrix4dvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformMatrix2x3dvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformMatrix2x4dvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformMatrix3x2dvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformMatrix3x4dvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformMatrix4x2dvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformMatrix4x3dvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float64 in array [count]
+       category        ARB_gpu_shader_fp64
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #90
+# ARB_shader_subroutine commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+GetSubroutineUniformLocation(program, shadertype, name)
+       return          Int32
+       param           program         UInt32 in value
+       param           shadertype      GLenum in value
+       param           name            Char in array []
+       category        ARB_shader_subroutine
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetSubroutineIndex(program, shadertype, name)
+       return          UInt32
+       param           program         UInt32 in value
+       param           shadertype      GLenum in value
+       param           name            Char in array []
+       category        ARB_shader_subroutine
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetActiveSubroutineUniformiv(program, shadertype, index, pname, values)
+       return          void
+       param           program         UInt32 in value
+       param           shadertype      GLenum in value
+       param           index           UInt32 in value
+       param           pname           GLenum in value
+       param           values          Int32 out array [COMPSIZE(pname)]
+       category        ARB_shader_subroutine
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name)
+       return          void
+       param           program         UInt32 in value
+       param           shadertype      GLenum in value
+       param           index           UInt32 in value
+       param           bufsize         SizeI in value
+       param           length          SizeI out array [1]
+       param           name            Char out array [bufsize]
+       category        ARB_shader_subroutine
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetActiveSubroutineName(program, shadertype, index, bufsize, length, name)
+       return          void
+       param           program         UInt32 in value
+       param           shadertype      GLenum in value
+       param           index           UInt32 in value
+       param           bufsize         SizeI in value
+       param           length          SizeI out array [1]
+       param           name            Char out array [bufsize]
+       category        ARB_shader_subroutine
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+UniformSubroutinesuiv(shadertype, count, indices)
+       return          void
+       param           shadertype      GLenum in value
+       param           count           SizeI in value
+       param           indices         UInt32 in array [count]
+       category        ARB_shader_subroutine
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetUniformSubroutineuiv(shadertype, location, params)
+       return          void
+       param           shadertype      GLenum in value
+       param           location        Int32 in value
+       param           params          UInt32 out array [1]
+       category        ARB_shader_subroutine
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetProgramStageiv(program, shadertype, pname, values)
+       return          void
+       param           program         UInt32 in value
+       param           shadertype      GLenum in value
+       param           pname           GLenum in value
+       param           values          Int32 out array [1]
+       category        ARB_shader_subroutine
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #91
+# ARB_tessellation_shader commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+PatchParameteri(pname, value)
+       return          void
+       param           pname           GLenum in value
+       param           value           Int32 in value
+       category        ARB_tessellation_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+PatchParameterfv(pname, values)
+       return          void
+       param           pname           GLenum in value
+       param           values          Float32 in array [COMPSIZE(pname)]
+       category        ARB_tessellation_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #92
+# ARB_texture_buffer_object_rgb32 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #93
+# ARB_transform_feedback2 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+BindTransformFeedback(target, id)
+       return          void
+       param           target          GLenum in value
+       param           id              UInt32 in value
+       category        ARB_transform_feedback2
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DeleteTransformFeedbacks(n, ids)
+       return          void
+       param           n               SizeI in value
+       param           ids             UInt32 in array [n]
+       category        ARB_transform_feedback2
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GenTransformFeedbacks(n, ids)
+       return          void
+       param           n               SizeI in value
+       param           ids             UInt32 out array [n]
+       category        ARB_transform_feedback2
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsTransformFeedback(id)
+       return          Boolean
+       param           id              UInt32 in value
+       category        ARB_transform_feedback2
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+PauseTransformFeedback()
+       return          void
+       category        ARB_transform_feedback2
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ResumeTransformFeedback()
+       return          void
+       category        ARB_transform_feedback2
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DrawTransformFeedback(mode, id)
+       return          void
+       param           mode            GLenum in value
+       param           id              UInt32 in value
+       category        ARB_transform_feedback2
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# ARB Extension #94
+# ARB_transform_feedback3 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+DrawTransformFeedbackStream(mode, id, stream)
+       return          void
+       param           mode            GLenum in value
+       param           id              UInt32 in value
+       param           stream          UInt32 in value
+       category        ARB_transform_feedback3
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BeginQueryIndexed(target, index, id)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           id              UInt32 in value
+       category        ARB_transform_feedback3
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+EndQueryIndexed(target, index)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       category        ARB_transform_feedback3
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetQueryIndexediv(target, index, pname, params)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        ARB_transform_feedback3
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+
+###############################################################################
+###############################################################################
+#
+# Non-ARB extensions, in order by registry extension number
+#
+###############################################################################
+###############################################################################
+
+###############################################################################
+#
+# Extension #1
+# EXT_abgr commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_abgr
+
+###############################################################################
+#
+# Extension #2
+# EXT_blend_color commands
+#
+###############################################################################
+
+BlendColorEXT(red, green, blue, alpha)
+       return          void
+       param           red             ClampedColorF in value
+       param           green           ClampedColorF in value
+       param           blue            ClampedColorF in value
+       param           alpha           ClampedColorF in value
+       category        EXT_blend_color
+       version         1.0
+       glxropcode      4096
+       glxflags        EXT
+       extension       soft
+       alias           BlendColor
+
+###############################################################################
+#
+# Extension #3
+# EXT_polygon_offset commands
+#
+###############################################################################
+
+PolygonOffsetEXT(factor, bias)
+       return          void
+       param           factor          Float32 in value
+       param           bias            Float32 in value
+       category        EXT_polygon_offset
+       version         1.0
+       glxropcode      4098
+       glxflags        EXT
+       extension       soft
+       offset          414
+
+###############################################################################
+#
+# Extension #4
+# EXT_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture
+
+###############################################################################
+#
+# Extension #5 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #6
+# EXT_texture3D commands
+#
+###############################################################################
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+TexImage3DEXT(target, level, internalformat, width, height, depth, border, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height/depth)]
+       category        EXT_texture3D
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxropcode      4114
+       extension
+       alias           TexImage3D
+
+TexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height/depth)]
+       category        EXT_texture3D
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxropcode      4115
+       extension
+       alias           TexSubImage3D
+
+###############################################################################
+#
+# Extension #7
+# SGIS_texture_filter4 commands
+#
+###############################################################################
+
+GetTexFilterFuncSGIS(target, filter, weights)
+       return          void
+       param           target          TextureTarget in value
+       param           filter          TextureFilterSGIS in value
+       param           weights         Float32 out array [COMPSIZE(target/filter)]
+       category        SGIS_texture_filter4
+       dlflags         notlistable
+       version         1.0
+       glxflags        SGI
+       glxvendorpriv   4101
+       extension
+       offset          415
+
+TexFilterFuncSGIS(target, filter, n, weights)
+       return          void
+       param           target          TextureTarget in value
+       param           filter          TextureFilterSGIS in value
+       param           n               SizeI in value
+       param           weights         Float32 in array [n]
+       category        SGIS_texture_filter4
+       glxflags        SGI
+       version         1.0
+       glxropcode      2064
+       extension
+       offset          416
+
+###############################################################################
+#
+# Extension #8 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #9
+# EXT_subtexture commands
+#
+###############################################################################
+
+TexSubImage1DEXT(target, level, xoffset, width, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width)]
+       category        EXT_subtexture
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxropcode      4099
+       extension
+       alias           TexSubImage1D
+
+TexSubImage2DEXT(target, level, xoffset, yoffset, width, height, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height)]
+       category        EXT_subtexture
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxropcode      4100
+       extension
+       alias           TexSubImage2D
+
+###############################################################################
+#
+# Extension #10
+# EXT_copy_texture commands
+#
+###############################################################################
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CopyTexImage1DEXT(target, level, internalformat, x, y, width, border)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       category        EXT_copy_texture
+       version         1.0
+       glxflags        EXT
+       glxropcode      4119
+       extension
+       alias           CopyTexImage1D
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CopyTexImage2DEXT(target, level, internalformat, x, y, width, height, border)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       category        EXT_copy_texture
+       version         1.0
+       glxflags        EXT
+       glxropcode      4120
+       extension
+       alias           CopyTexImage2D
+
+CopyTexSubImage1DEXT(target, level, xoffset, x, y, width)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       category        EXT_copy_texture
+       version         1.0
+       glxflags        EXT
+       glxropcode      4121
+       extension
+       alias           CopyTexSubImage1D
+
+CopyTexSubImage2DEXT(target, level, xoffset, yoffset, x, y, width, height)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_copy_texture
+       version         1.0
+       glxflags        EXT
+       glxropcode      4122
+       extension
+       alias           CopyTexSubImage2D
+
+CopyTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, x, y, width, height)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_copy_texture
+       version         1.0
+       glxflags        EXT
+       glxropcode      4123
+       extension
+       alias           CopyTexSubImage3D
+
+###############################################################################
+#
+# Extension #11
+# EXT_histogram commands
+#
+###############################################################################
+
+GetHistogramEXT(target, reset, format, type, values)
+       return          void
+       param           target          HistogramTargetEXT in value
+       param           reset           Boolean in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           values          Void out array [COMPSIZE(target/format/type)]
+       category        EXT_histogram
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxvendorpriv   5
+       extension
+       offset          417
+
+GetHistogramParameterfvEXT(target, pname, params)
+       return          void
+       param           target          HistogramTargetEXT in value
+       param           pname           GetHistogramParameterPNameEXT in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        EXT_histogram
+       dlflags         notlistable
+       version         1.0
+       glxvendorpriv   6
+       glxflags        EXT
+       extension
+       offset          418
+
+GetHistogramParameterivEXT(target, pname, params)
+       return          void
+       param           target          HistogramTargetEXT in value
+       param           pname           GetHistogramParameterPNameEXT in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_histogram
+       dlflags         notlistable
+       version         1.0
+       glxvendorpriv   7
+       glxflags        EXT
+       extension
+       offset          419
+
+GetMinmaxEXT(target, reset, format, type, values)
+       return          void
+       param           target          MinmaxTargetEXT in value
+       param           reset           Boolean in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           values          Void out array [COMPSIZE(target/format/type)]
+       category        EXT_histogram
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxvendorpriv   8
+       extension
+       offset          420
+
+GetMinmaxParameterfvEXT(target, pname, params)
+       return          void
+       param           target          MinmaxTargetEXT in value
+       param           pname           GetMinmaxParameterPNameEXT in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        EXT_histogram
+       dlflags         notlistable
+       version         1.0
+       glxvendorpriv   9
+       glxflags        EXT
+       extension
+       offset          421
+
+GetMinmaxParameterivEXT(target, pname, params)
+       return          void
+       param           target          MinmaxTargetEXT in value
+       param           pname           GetMinmaxParameterPNameEXT in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_histogram
+       dlflags         notlistable
+       version         1.0
+       glxvendorpriv   10
+       glxflags        EXT
+       extension
+       offset          422
+
+HistogramEXT(target, width, internalformat, sink)
+       return          void
+       param           target          HistogramTargetEXT in value
+       param           width           SizeI in value
+       param           internalformat  PixelInternalFormat in value
+       param           sink            Boolean in value
+       category        EXT_histogram
+       version         1.0
+       glxropcode      4110
+       glxflags        EXT
+       extension
+       alias           Histogram
+
+MinmaxEXT(target, internalformat, sink)
+       return          void
+       param           target          MinmaxTargetEXT in value
+       param           internalformat  PixelInternalFormat in value
+       param           sink            Boolean in value
+       category        EXT_histogram
+       version         1.0
+       glxropcode      4111
+       glxflags        EXT
+       extension
+       alias           Minmax
+
+ResetHistogramEXT(target)
+       return          void
+       param           target          HistogramTargetEXT in value
+       category        EXT_histogram
+       version         1.0
+       glxropcode      4112
+       glxflags        EXT
+       extension
+       alias           ResetHistogram
+
+ResetMinmaxEXT(target)
+       return          void
+       param           target          MinmaxTargetEXT in value
+       category        EXT_histogram
+       version         1.0
+       glxropcode      4113
+       glxflags        EXT
+       extension
+       alias           ResetMinmax
+
+###############################################################################
+#
+# Extension #12
+# EXT_convolution commands
+#
+###############################################################################
+
+ConvolutionFilter1DEXT(target, internalformat, width, format, type, image)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           image           Void in array [COMPSIZE(format/type/width)]
+       category        EXT_convolution
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxropcode      4101
+       extension
+       alias           ConvolutionFilter1D
+
+ConvolutionFilter2DEXT(target, internalformat, width, height, format, type, image)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           image           Void in array [COMPSIZE(format/type/width/height)]
+       category        EXT_convolution
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxropcode      4102
+       extension
+       alias           ConvolutionFilter2D
+
+ConvolutionParameterfEXT(target, pname, params)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           pname           ConvolutionParameterEXT in value
+       param           params          CheckedFloat32 in value
+       category        EXT_convolution
+       version         1.0
+       glxropcode      4103
+       glxflags        EXT
+       extension
+       alias           ConvolutionParameterf
+
+ConvolutionParameterfvEXT(target, pname, params)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           pname           ConvolutionParameterEXT in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        EXT_convolution
+       version         1.0
+       glxropcode      4104
+       glxflags        EXT
+       extension
+       alias           ConvolutionParameterfv
+
+ConvolutionParameteriEXT(target, pname, params)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           pname           ConvolutionParameterEXT in value
+       param           params          CheckedInt32 in value
+       category        EXT_convolution
+       version         1.0
+       glxropcode      4105
+       glxflags        EXT
+       extension
+       alias           ConvolutionParameteri
+
+ConvolutionParameterivEXT(target, pname, params)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           pname           ConvolutionParameterEXT in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        EXT_convolution
+       version         1.0
+       glxropcode      4106
+       glxflags        EXT
+       extension
+       alias           ConvolutionParameteriv
+
+CopyConvolutionFilter1DEXT(target, internalformat, x, y, width)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           internalformat  PixelInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       category        EXT_convolution
+       version         1.0
+       glxropcode      4107
+       glxflags        EXT
+       extension
+       alias           CopyConvolutionFilter1D
+
+CopyConvolutionFilter2DEXT(target, internalformat, x, y, width, height)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           internalformat  PixelInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_convolution
+       version         1.0
+       glxropcode      4108
+       glxflags        EXT
+       extension
+       alias           CopyConvolutionFilter2D
+
+GetConvolutionFilterEXT(target, format, type, image)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           image           Void out array [COMPSIZE(target/format/type)]
+       category        EXT_convolution
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxvendorpriv   1
+       extension
+       offset          423
+
+GetConvolutionParameterfvEXT(target, pname, params)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           pname           ConvolutionParameterEXT in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        EXT_convolution
+       dlflags         notlistable
+       version         1.0
+       glxvendorpriv   2
+       glxflags        EXT
+       extension
+       offset          424
+
+GetConvolutionParameterivEXT(target, pname, params)
+       return          void
+       param           target          ConvolutionTargetEXT in value
+       param           pname           ConvolutionParameterEXT in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_convolution
+       dlflags         notlistable
+       version         1.0
+       glxvendorpriv   3
+       glxflags        EXT
+       extension
+       offset          425
+
+GetSeparableFilterEXT(target, format, type, row, column, span)
+       return          void
+       param           target          SeparableTargetEXT in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           row             Void out array [COMPSIZE(target/format/type)]
+       param           column          Void out array [COMPSIZE(target/format/type)]
+       param           span            Void out array [COMPSIZE(target/format/type)]
+       category        EXT_convolution
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxvendorpriv   4
+       extension
+       offset          426
+
+SeparableFilter2DEXT(target, internalformat, width, height, format, type, row, column)
+       return          void
+       param           target          SeparableTargetEXT in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           row             Void in array [COMPSIZE(target/format/type/width)]
+       param           column          Void in array [COMPSIZE(target/format/type/height)]
+       category        EXT_convolution
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxropcode      4109
+       extension
+       alias           SeparableFilter2D
+
+###############################################################################
+#
+# Extension #13
+# SGI_color_matrix commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGI_color_matrix
+
+###############################################################################
+#
+# Extension #14
+# SGI_color_table commands
+#
+###############################################################################
+
+ColorTableSGI(target, internalformat, width, format, type, table)
+       return          void
+       param           target          ColorTableTargetSGI in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           table           Void in array [COMPSIZE(format/type/width)]
+       category        SGI_color_table
+       dlflags         handcode
+       glxflags        client-handcode server-handcode SGI
+       version         1.0
+       glxropcode      2053
+       extension
+       alias           ColorTable
+
+ColorTableParameterfvSGI(target, pname, params)
+       return          void
+       param           target          ColorTableTargetSGI in value
+       param           pname           ColorTableParameterPNameSGI in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        SGI_color_table
+       version         1.0
+       glxropcode      2054
+       glxflags        SGI
+       extension
+       alias           ColorTableParameterfv
+
+ColorTableParameterivSGI(target, pname, params)
+       return          void
+       param           target          ColorTableTargetSGI in value
+       param           pname           ColorTableParameterPNameSGI in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        SGI_color_table
+       version         1.0
+       glxropcode      2055
+       glxflags        SGI
+       extension
+       alias           ColorTableParameteriv
+
+CopyColorTableSGI(target, internalformat, x, y, width)
+       return          void
+       param           target          ColorTableTargetSGI in value
+       param           internalformat  PixelInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       category        SGI_color_table
+       version         1.0
+       glxropcode      2056
+       glxflags        SGI
+       extension
+       alias           CopyColorTable
+
+GetColorTableSGI(target, format, type, table)
+       return          void
+       param           target          ColorTableTargetSGI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           table           Void out array [COMPSIZE(target/format/type)]
+       category        SGI_color_table
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode SGI
+       version         1.0
+       glxvendorpriv   4098
+       extension
+       offset          427
+
+GetColorTableParameterfvSGI(target, pname, params)
+       return          void
+       param           target          ColorTableTargetSGI in value
+       param           pname           GetColorTableParameterPNameSGI in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        SGI_color_table
+       dlflags         notlistable
+       version         1.0
+       glxflags        SGI
+       glxvendorpriv   4099
+       extension
+       offset          428
+
+GetColorTableParameterivSGI(target, pname, params)
+       return          void
+       param           target          ColorTableTargetSGI in value
+       param           pname           GetColorTableParameterPNameSGI in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        SGI_color_table
+       dlflags         notlistable
+       version         1.0
+       glxflags        SGI
+       glxvendorpriv   4100
+       extension
+       offset          429
+
+###############################################################################
+#
+# Extension #15
+# SGIX_pixel_texture commands
+#
+###############################################################################
+
+PixelTexGenSGIX(mode)
+       return          void
+       param           mode            PixelTexGenModeSGIX in value
+       category        SGIX_pixel_texture
+       version         1.0
+       glxflags        SGI
+       glxropcode      2059
+       extension
+       offset          430
+
+###############################################################################
+#
+# Extension #15 (variant)
+# SGIS_pixel_texture commands
+# Both SGIS and SGIX forms have extension #15!
+#
+###############################################################################
+
+PixelTexGenParameteriSGIS(pname, param)
+       return          void
+       param           pname           PixelTexGenParameterNameSGIS in value
+       param           param           CheckedInt32 in value
+       category        SGIS_pixel_texture
+       version         1.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          431
+
+PixelTexGenParameterivSGIS(pname, params)
+       return          void
+       param           pname           PixelTexGenParameterNameSGIS in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        SGIS_pixel_texture
+       version         1.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          432
+
+PixelTexGenParameterfSGIS(pname, param)
+       return          void
+       param           pname           PixelTexGenParameterNameSGIS in value
+       param           param           CheckedFloat32 in value
+       category        SGIS_pixel_texture
+       version         1.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          433
+
+PixelTexGenParameterfvSGIS(pname, params)
+       return          void
+       param           pname           PixelTexGenParameterNameSGIS in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        SGIS_pixel_texture
+       version         1.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          434
+
+GetPixelTexGenParameterivSGIS(pname, params)
+       return          void
+       param           pname           PixelTexGenParameterNameSGIS in value
+       param           params          CheckedInt32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        SGIS_pixel_texture
+       version         1.0
+       extension
+       glxvendorpriv   ?
+       glxflags        ignore
+       offset          435
+
+GetPixelTexGenParameterfvSGIS(pname, params)
+       return          void
+       param           pname           PixelTexGenParameterNameSGIS in value
+       param           params          CheckedFloat32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        SGIS_pixel_texture
+       version         1.0
+       extension
+       glxvendorpriv   ?
+       glxflags        ignore
+       offset          436
+
+###############################################################################
+#
+# Extension #16
+# SGIS_texture4D commands
+#
+###############################################################################
+
+TexImage4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           size4d          SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height/depth/size4d)]
+       category        SGIS_texture4D
+       dlflags         handcode
+       glxflags        client-handcode server-handcode SGI
+       version         1.0
+       glxropcode      2057
+       extension
+       offset          437
+
+TexSubImage4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels)
+       return          void
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           woffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           size4d          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height/depth/size4d)]
+       category        SGIS_texture4D
+       dlflags         handcode
+       glxflags        client-handcode server-handcode SGI
+       version         1.0
+       glxropcode      2058
+       extension
+       offset          438
+
+###############################################################################
+#
+# Extension #17
+# SGI_texture_color_table commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGI_texture_color_table
+
+###############################################################################
+#
+# Extension #18
+# EXT_cmyka commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_cmyka
+
+###############################################################################
+#
+# Extension #19 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #20
+# EXT_texture_object commands
+#
+###############################################################################
+
+AreTexturesResidentEXT(n, textures, residences)
+       return          Boolean
+       param           n               SizeI in value
+       param           textures        Texture in array [n]
+       param           residences      Boolean out array [n]
+       category        EXT_texture_object
+       glxflags        EXT
+       glxvendorpriv   11
+       dlflags         notlistable
+       version         1.0
+       extension
+       offset          439
+
+BindTextureEXT(target, texture)
+       return          void
+       param           target  TextureTarget in value
+       param           texture Texture in value
+       category        EXT_texture_object
+       version         1.0
+       glxflags        EXT
+       glxropcode      4117
+       extension
+       alias           BindTexture
+
+DeleteTexturesEXT(n, textures)
+       return          void
+       param           n               SizeI in value
+       param           textures        Texture in array [n]
+       category        EXT_texture_object
+       dlflags         notlistable
+       version         1.0
+       glxflags        EXT
+       glxvendorpriv   12
+       extension
+       offset          561
+
+GenTexturesEXT(n, textures)
+       return          void
+       param           n               SizeI in value
+       param           textures        Texture out array [n]
+       category        EXT_texture_object
+       dlflags         notlistable
+       version         1.0
+       glxflags        EXT
+       glxvendorpriv   13
+       extension
+       offset          440
+
+IsTextureEXT(texture)
+       return          Boolean
+       param           texture Texture in value
+       category        EXT_texture_object
+       dlflags         notlistable
+       version         1.0
+       glxflags        EXT
+       glxvendorpriv   14
+       extension
+       offset          441
+
+PrioritizeTexturesEXT(n, textures, priorities)
+       return          void
+       param           n               SizeI in value
+       param           textures        Texture in array [n]
+       param           priorities      ClampedFloat32 in array [n]
+       category        EXT_texture_object
+       glxflags        EXT
+       version         1.0
+       glxropcode      4118
+       extension
+       alias           PrioritizeTextures
+
+###############################################################################
+#
+# Extension #21
+# SGIS_detail_texture commands
+#
+###############################################################################
+
+DetailTexFuncSGIS(target, n, points)
+       return          void
+       param           target          TextureTarget in value
+       param           n               SizeI in value
+       param           points          Float32 in array [n*2]
+       category        SGIS_detail_texture
+       glxflags        SGI
+       version         1.0
+       glxropcode      2051
+       extension
+       offset          442
+
+GetDetailTexFuncSGIS(target, points)
+       return          void
+       param           target          TextureTarget in value
+       param           points          Float32 out array [COMPSIZE(target)]
+       category        SGIS_detail_texture
+       dlflags         notlistable
+       version         1.0
+       glxflags        SGI
+       glxvendorpriv   4096
+       extension
+       offset          443
+
+###############################################################################
+#
+# Extension #22
+# SGIS_sharpen_texture commands
+#
+###############################################################################
+
+SharpenTexFuncSGIS(target, n, points)
+       return          void
+       param           target          TextureTarget in value
+       param           n               SizeI in value
+       param           points          Float32 in array [n*2]
+       category        SGIS_sharpen_texture
+       glxflags        SGI
+       version         1.0
+       glxropcode      2052
+       extension
+       offset          444
+
+GetSharpenTexFuncSGIS(target, points)
+       return          void
+       param           target          TextureTarget in value
+       param           points          Float32 out array [COMPSIZE(target)]
+       category        SGIS_sharpen_texture
+       dlflags         notlistable
+       version         1.0
+       glxflags        SGI
+       glxvendorpriv   4097
+       extension
+       offset          445
+
+###############################################################################
+#
+# EXT_packed_pixels commands
+# Extension #23
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_packed_pixels
+
+###############################################################################
+#
+# Extension #24
+# SGIS_texture_lod commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_texture_lod
+
+###############################################################################
+#
+# Extension #25
+# SGIS_multisample commands
+#
+###############################################################################
+
+SampleMaskSGIS(value, invert)
+       return          void
+       param           value           ClampedFloat32 in value
+       param           invert          Boolean in value
+       category        SGIS_multisample
+       version         1.1
+       glxropcode      2048
+       glxflags        SGI
+       extension
+       alias           SampleMaskEXT
+
+SamplePatternSGIS(pattern)
+       return          void
+       param           pattern         SamplePatternSGIS in value
+       category        SGIS_multisample
+       version         1.0
+       glxropcode      2049
+       glxflags        SGI
+       extension
+       alias           SamplePatternEXT
+
+###############################################################################
+#
+# Extension #26 - no specification?
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #27
+# EXT_rescale_normal commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_rescale_normal
+
+###############################################################################
+#
+# Extension #28 - GLX_EXT_visual_info
+# Extension #29 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #30
+# EXT_vertex_array commands
+#
+###############################################################################
+
+ArrayElementEXT(i)
+       return          void
+       param           i               Int32 in value
+       category        EXT_vertex_array
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       extension
+       alias           ArrayElement
+
+ColorPointerEXT(size, type, stride, count, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            ColorPointerType in value
+       param           stride          SizeI in value
+       param           count           SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride/count)] retained
+       category        EXT_vertex_array
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       extension
+       offset          448
+
+DrawArraysEXT(mode, first, count)
+       return          void
+       param           mode            BeginMode in value
+       param           first           Int32 in value
+       param           count           SizeI in value
+       category        EXT_vertex_array
+       dlflags         handcode
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       glxropcode      4116
+       extension
+       alias           DrawArrays
+
+EdgeFlagPointerEXT(stride, count, pointer)
+       return          void
+       param           stride          SizeI in value
+       param           count           SizeI in value
+       param           pointer         Boolean in array [COMPSIZE(stride/count)] retained
+       category        EXT_vertex_array
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       extension
+       offset          449
+
+GetPointervEXT(pname, params)
+       return          void
+       param           pname           GetPointervPName in value
+       param           params          VoidPointer out array [1]
+       category        EXT_vertex_array
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       extension
+       alias           GetPointerv
+
+IndexPointerEXT(type, stride, count, pointer)
+       return          void
+       param           type            IndexPointerType in value
+       param           stride          SizeI in value
+       param           count           SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride/count)] retained
+       category        EXT_vertex_array
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       extension
+       offset          450
+
+NormalPointerEXT(type, stride, count, pointer)
+       return          void
+       param           type            NormalPointerType in value
+       param           stride          SizeI in value
+       param           count           SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride/count)] retained
+       category        EXT_vertex_array
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       extension
+       offset          451
+
+TexCoordPointerEXT(size, type, stride, count, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            TexCoordPointerType in value
+       param           stride          SizeI in value
+       param           count           SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride/count)] retained
+       category        EXT_vertex_array
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       extension
+       offset          452
+
+VertexPointerEXT(size, type, stride, count, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            VertexPointerType in value
+       param           stride          SizeI in value
+       param           count           SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride/count)] retained
+       category        EXT_vertex_array
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.0
+       extension
+       offset          453
+
+###############################################################################
+#
+# Extension #31
+# EXT_misc_attribute commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_misc_attribute
+
+###############################################################################
+#
+# Extension #32
+# SGIS_generate_mipmap commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_generate_mipmap
+
+###############################################################################
+#
+# Extension #33
+# SGIX_clipmap commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_clipmap
+
+###############################################################################
+#
+# Extension #34
+# SGIX_shadow commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_shadow
+
+###############################################################################
+#
+# Extension #35
+# SGIS_texture_edge_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_texture_edge_clamp
+
+###############################################################################
+#
+# Extension #36
+# SGIS_texture_border_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_texture_border_clamp
+
+###############################################################################
+#
+# Extension #37
+# EXT_blend_minmax commands
+#
+###############################################################################
+
+BlendEquationEXT(mode)
+       return          void
+       param           mode            BlendEquationModeEXT in value
+       category        EXT_blend_minmax
+       version         1.0
+       glxropcode      4097
+       glxflags        EXT
+       extension       soft
+       alias           BlendEquation
+
+###############################################################################
+#
+# Extension #38
+# EXT_blend_subtract commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_blend_subtract
+
+###############################################################################
+#
+# Extension #39
+# EXT_blend_logic_op commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_blend_logic_op
+
+###############################################################################
+#
+# Extension #40 - GLX_SGI_swap_control
+# Extension #41 - GLX_SGI_video_sync
+# Extension #42 - GLX_SGI_make_current_read
+# Extension #43 - GLX_SGIX_video_source
+# Extension #44 - GLX_EXT_visual_rating
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #45
+# SGIX_interlace commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_interlace
+
+###############################################################################
+#
+# Extension #46
+# SGIX_pixel_tiles commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_pixel_tiles
+
+###############################################################################
+#
+# Extension #47 - GLX_EXT_import_context
+# Extension #48 - skipped
+# Extension #49 - GLX_SGIX_fbconfig
+# Extension #50 - GLX_SGIX_pbuffer
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #51
+# SGIX_texture_select commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_select
+
+###############################################################################
+#
+# Extension #52
+# SGIX_sprite commands
+#
+###############################################################################
+
+SpriteParameterfSGIX(pname, param)
+       return          void
+       param           pname           SpriteParameterNameSGIX in value
+       param           param           CheckedFloat32 in value
+       category        SGIX_sprite
+       version         1.0
+       glxflags        SGI
+       glxropcode      2060
+       extension
+       offset          454
+
+SpriteParameterfvSGIX(pname, params)
+       return          void
+       param           pname           SpriteParameterNameSGIX in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        SGIX_sprite
+       version         1.0
+       glxflags        SGI
+       glxropcode      2061
+       extension
+       offset          455
+
+SpriteParameteriSGIX(pname, param)
+       return          void
+       param           pname           SpriteParameterNameSGIX in value
+       param           param           CheckedInt32 in value
+       category        SGIX_sprite
+       version         1.0
+       glxflags        SGI
+       glxropcode      2062
+       extension
+       offset          456
+
+SpriteParameterivSGIX(pname, params)
+       return          void
+       param           pname           SpriteParameterNameSGIX in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        SGIX_sprite
+       version         1.0
+       glxflags        SGI
+       glxropcode      2063
+       extension
+       offset          457
+
+###############################################################################
+#
+# Extension #53
+# SGIX_texture_multi_buffer commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_multi_buffer
+
+###############################################################################
+#
+# Extension #54
+# EXT_point_parameters / SGIS_point_parameters commands
+#
+###############################################################################
+
+PointParameterfEXT(pname, param)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           param           CheckedFloat32 in value
+       category        EXT_point_parameters
+       version         1.0
+       glxflags        SGI
+       extension
+       alias           PointParameterfARB
+
+PointParameterfvEXT(pname, params)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        EXT_point_parameters
+       version         1.0
+       glxflags        SGI
+       extension
+       alias           PointParameterfvARB
+
+PointParameterfSGIS(pname, param)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           param           CheckedFloat32 in value
+       category        SGIS_point_parameters
+       version         1.0
+       glxflags        SGI
+       extension
+       alias           PointParameterfARB
+
+PointParameterfvSGIS(pname, params)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        SGIS_point_parameters
+       version         1.0
+       glxflags        SGI
+       extension
+       alias           PointParameterfvARB
+
+###############################################################################
+#
+# Extension #55
+# SGIX_instruments commands
+#
+###############################################################################
+
+GetInstrumentsSGIX()
+       return          Int32
+       dlflags         notlistable
+       category        SGIX_instruments
+       version         1.0
+       glxflags        SGI
+       glxvendorpriv   4102
+       extension
+       offset          460
+
+InstrumentsBufferSGIX(size, buffer)
+       return          void
+       param           size            SizeI in value
+       param           buffer          Int32 out array [size] retained
+       dlflags         notlistable
+       category        SGIX_instruments
+       version         1.0
+       glxflags        SGI
+       glxvendorpriv   4103
+       extension
+       offset          461
+
+PollInstrumentsSGIX(marker_p)
+       return          Int32
+       param           marker_p        Int32 out array [1]
+       dlflags         notlistable
+       category        SGIX_instruments
+       version         1.0
+       glxflags        SGI
+       glxvendorpriv   4104
+       extension
+       offset          462
+
+ReadInstrumentsSGIX(marker)
+       return          void
+       param           marker          Int32 in value
+       category        SGIX_instruments
+       version         1.0
+       glxflags        SGI
+       glxropcode      2077
+       extension
+       offset          463
+
+StartInstrumentsSGIX()
+       return          void
+       category        SGIX_instruments
+       version         1.0
+       glxflags        SGI
+       glxropcode      2069
+       extension
+       offset          464
+
+StopInstrumentsSGIX(marker)
+       return          void
+       param           marker          Int32 in value
+       category        SGIX_instruments
+       version         1.0
+       glxflags        SGI
+       glxropcode      2070
+       extension
+       offset          465
+
+###############################################################################
+#
+# Extension #56
+# SGIX_texture_scale_bias commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_scale_bias
+
+###############################################################################
+#
+# Extension #57
+# SGIX_framezoom commands
+#
+###############################################################################
+
+FrameZoomSGIX(factor)
+       return          void
+       param           factor          CheckedInt32 in value
+       category        SGIX_framezoom
+       version         1.0
+       glxflags        SGI
+       glxropcode      2072
+       extension
+       offset          466
+
+###############################################################################
+#
+# Extension #58
+# SGIX_tag_sample_buffer commands
+#
+###############################################################################
+
+TagSampleBufferSGIX()
+       return          void
+       category        SGIX_tag_sample_buffer
+       version         1.0
+       glxropcode      2050
+       glxflags        SGI
+       extension
+       offset          467
+
+###############################################################################
+#
+# Extension #59
+# SGIX_polynomial_ffd commands
+#
+###############################################################################
+
+DeformationMap3dSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points)
+       return          void
+       param           target          FfdTargetSGIX in value
+       param           u1              CoordD in value
+       param           u2              CoordD in value
+       param           ustride         Int32 in value
+       param           uorder          CheckedInt32 in value
+       param           v1              CoordD in value
+       param           v2              CoordD in value
+       param           vstride         Int32 in value
+       param           vorder          CheckedInt32 in value
+       param           w1              CoordD in value
+       param           w2              CoordD in value
+       param           wstride         Int32 in value
+       param           worder          CheckedInt32 in value
+       param           points          CoordD in array [COMPSIZE(target/ustride/uorder/vstride/vorder/wstride/worder)]
+       dlflags         handcode
+       category        SGIX_polynomial_ffd
+       version         1.0
+       glxflags        SGI ignore
+       glxropcode      2073
+       extension
+       offset          ?
+
+DeformationMap3fSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points)
+       return          void
+       param           target          FfdTargetSGIX in value
+       param           u1              CoordF in value
+       param           u2              CoordF in value
+       param           ustride         Int32 in value
+       param           uorder          CheckedInt32 in value
+       param           v1              CoordF in value
+       param           v2              CoordF in value
+       param           vstride         Int32 in value
+       param           vorder          CheckedInt32 in value
+       param           w1              CoordF in value
+       param           w2              CoordF in value
+       param           wstride         Int32 in value
+       param           worder          CheckedInt32 in value
+       param           points          CoordF in array [COMPSIZE(target/ustride/uorder/vstride/vorder/wstride/worder)]
+       category        SGIX_polynomial_ffd
+       dlflags         handcode
+       version         1.0
+       glxflags        SGI ignore
+       glxropcode      2074
+       extension
+       offset          ?
+
+DeformSGIX(mask)
+       return          void
+       param           mask            FfdMaskSGIX in value
+       category        SGIX_polynomial_ffd
+       version         1.0
+       glxflags        SGI ignore
+       glxropcode      2075
+       extension
+       offset          ?
+
+LoadIdentityDeformationMapSGIX(mask)
+       return          void
+       param           mask            FfdMaskSGIX in value
+       category        SGIX_polynomial_ffd
+       version         1.0
+       glxflags        SGI ignore
+       glxropcode      2076
+       extension
+       offset          ?
+
+###############################################################################
+#
+# Extension #60
+# SGIX_reference_plane commands
+#
+###############################################################################
+
+ReferencePlaneSGIX(equation)
+       return          void
+       param           equation        Float64 in array [4]
+       category        SGIX_reference_plane
+       version         1.0
+       glxflags        SGI
+       glxropcode      2071
+       extension
+       offset          468
+
+###############################################################################
+#
+# Extension #61
+# SGIX_flush_raster commands
+#
+###############################################################################
+
+FlushRasterSGIX()
+       return          void
+       category        SGIX_flush_raster
+       version         1.0
+       dlflags         notlistable
+       glxflags        SGI
+       glxvendorpriv   4105
+       extension
+       offset          469
+
+###############################################################################
+#
+# Extension #62 - GLX_SGIX_cushion
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #63
+# SGIX_depth_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_depth_texture
+
+###############################################################################
+#
+# Extension #64
+# SGIS_fog_function commands
+#
+###############################################################################
+
+FogFuncSGIS(n, points)
+       return          void
+       param           n               SizeI in value
+       param           points          Float32 in array [n*2]
+       category        SGIS_fog_function
+       version         1.1
+       glxflags        SGI
+       glxropcode      2067
+       extension
+       offset
+
+# Need to insert GLX information
+GetFogFuncSGIS(points)
+       return          void
+       param           points          Float32 out array [COMPSIZE()]
+       category        SGIS_fog_function
+       version         1.1
+       dlflags         notlistable
+       glxflags        ignore
+       extension
+       offset
+
+###############################################################################
+#
+# Extension #65
+# SGIX_fog_offset commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_fog_offset
+
+###############################################################################
+#
+# Extension #66
+# HP_image_transform commands
+#
+###############################################################################
+
+ImageTransformParameteriHP(target, pname, param)
+       return          void
+       param           target          ImageTransformTargetHP in value
+       param           pname           ImageTransformPNameHP in value
+       param           param           Int32 in value
+       category        HP_image_transform
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ImageTransformParameterfHP(target, pname, param)
+       return          void
+       param           target          ImageTransformTargetHP in value
+       param           pname           ImageTransformPNameHP in value
+       param           param           Float32 in value
+       category        HP_image_transform
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ImageTransformParameterivHP(target, pname, params)
+       return          void
+       param           target          ImageTransformTargetHP in value
+       param           pname           ImageTransformPNameHP in value
+       param           params          Int32 in array [COMPSIZE(pname)]
+       category        HP_image_transform
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ImageTransformParameterfvHP(target, pname, params)
+       return          void
+       param           target          ImageTransformTargetHP in value
+       param           pname           ImageTransformPNameHP in value
+       param           params          Float32 in array [COMPSIZE(pname)]
+       category        HP_image_transform
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+GetImageTransformParameterivHP(target, pname, params)
+       return          void
+       param           target          ImageTransformTargetHP in value
+       param           pname           ImageTransformPNameHP in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        HP_image_transform
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+GetImageTransformParameterfvHP(target, pname, params)
+       return          void
+       param           target          ImageTransformTargetHP in value
+       param           pname           ImageTransformPNameHP in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        HP_image_transform
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+###############################################################################
+#
+# Extension #67
+# HP_convolution_border_modes commands
+#
+###############################################################################
+
+# (none)
+newcategory: HP_convolution_border_modes
+
+###############################################################################
+#
+# Extension #68
+# INGR_palette_buffer commands
+#
+###############################################################################
+
+#@ (Intergraph hasn't provided a spec)
+
+###############################################################################
+#
+# Extension #69
+# SGIX_texture_add_env commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_add_env
+
+###############################################################################
+#
+# Extension #70 - skipped
+# Extension #71 - skipped
+# Extension #72 - skipped
+# Extension #73 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #74
+# EXT_color_subtable commands
+#
+# This was probably never actually shipped as an EXT - just written up as a
+# reference for OpenGL 1.2 ARB_imaging.
+#
+###############################################################################
+
+ColorSubTableEXT(target, start, count, format, type, data)
+       return          void
+       param           target          ColorTableTarget in value
+       param           start           SizeI in value
+       param           count           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           data            Void in array [COMPSIZE(format/type/count)]
+       category        EXT_color_subtable
+       version         1.2
+       alias           ColorSubTable
+
+CopyColorSubTableEXT(target, start, x, y, width)
+       return          void
+       param           target          ColorTableTarget in value
+       param           start           SizeI in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       category        EXT_color_subtable
+       version         1.2
+       alias           CopyColorSubTable
+
+###############################################################################
+#
+# Extension #75 - GLU_EXT_object_space_tess
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #76
+# PGI_vertex_hints commands
+#
+###############################################################################
+
+# (none)
+newcategory: PGI_vertex_hints
+
+###############################################################################
+#
+# Extension #77
+# PGI_misc_hints commands
+#
+###############################################################################
+
+HintPGI(target, mode)
+       return          void
+       param           target          HintTargetPGI in value
+       param           mode            Int32 in value
+       category        PGI_misc_hints
+       version         1.1
+       offset          544
+
+###############################################################################
+#
+# Extension #78
+# EXT_paletted_texture commands
+#
+###############################################################################
+
+ColorTableEXT(target, internalFormat, width, format, type, table)
+       return          void
+       param           target          ColorTableTarget in value
+       param           internalFormat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           table           Void in array [COMPSIZE(format/type/width)]
+       category        EXT_paletted_texture
+       version         1.1
+       alias           ColorTable
+
+GetColorTableEXT(target, format, type, data)
+       return          void
+       param           target          ColorTableTarget in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           data            Void out array [COMPSIZE(target/format/type)]
+       category        EXT_paletted_texture
+       version         1.1
+       offset          550
+
+GetColorTableParameterivEXT(target, pname, params)
+       return          void
+       param           target          ColorTableTarget in value
+       param           pname           GetColorTableParameterPName in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_paletted_texture
+       version         1.1
+       offset          551
+
+GetColorTableParameterfvEXT(target, pname, params)
+       return          void
+       param           target          ColorTableTarget in value
+       param           pname           GetColorTableParameterPName in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        EXT_paletted_texture
+       version         1.1
+       offset          552
+
+###############################################################################
+#
+# Extension #79
+# EXT_clip_volume_hint commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_clip_volume_hint
+
+###############################################################################
+#
+# Extension #80
+# SGIX_list_priority commands
+#
+###############################################################################
+
+# @@@ Needs vendorpriv opcodes assigned
+GetListParameterfvSGIX(list, pname, params)
+       return          void
+       param           list            List in value
+       param           pname           ListParameterName in value
+       param           params          CheckedFloat32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       glxflags        ignore
+       category        SGIX_list_priority
+       version         1.0
+       glxvendorpriv   ?
+       extension
+       offset          470
+
+# @@@ Needs vendorpriv opcodes assigned
+GetListParameterivSGIX(list, pname, params)
+       return          void
+       param           list            List in value
+       param           pname           ListParameterName in value
+       param           params          CheckedInt32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       glxflags        ignore
+       category        SGIX_list_priority
+       version         1.0
+       glxvendorpriv   ?
+       extension
+       offset          471
+
+ListParameterfSGIX(list, pname, param)
+       return          void
+       param           list            List in value
+       param           pname           ListParameterName in value
+       param           param           CheckedFloat32 in value
+       dlflags         notlistable
+       glxflags        ignore
+       category        SGIX_list_priority
+       version         1.0
+       glxropcode      2078
+       extension
+       offset          472
+
+ListParameterfvSGIX(list, pname, params)
+       return          void
+       param           list            List in value
+       param           pname           ListParameterName in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       dlflags         notlistable
+       glxflags        ignore
+       category        SGIX_list_priority
+       version         1.0
+       glxropcode      2079
+       extension
+       offset          473
+
+ListParameteriSGIX(list, pname, param)
+       return          void
+       param           list            List in value
+       param           pname           ListParameterName in value
+       param           param           CheckedInt32 in value
+       dlflags         notlistable
+       glxflags        ignore
+       category        SGIX_list_priority
+       version         1.0
+       glxropcode      2080
+       extension
+       offset          474
+
+ListParameterivSGIX(list, pname, params)
+       return          void
+       param           list            List in value
+       param           pname           ListParameterName in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       dlflags         notlistable
+       glxflags        ignore
+       category        SGIX_list_priority
+       version         1.0
+       glxropcode      2081
+       extension
+       offset          475
+
+###############################################################################
+#
+# Extension #81
+# SGIX_ir_instrument1 commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_ir_instrument1
+
+###############################################################################
+#
+# Extension #82
+# SGIX_calligraphic_fragment commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_calligraphic_fragment
+
+###############################################################################
+#
+# Extension #83 - GLX_SGIX_video_resize
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #84
+# SGIX_texture_lod_bias commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_lod_bias
+
+###############################################################################
+#
+# Extension #85 - skipped
+# Extension #86 - GLX_SGIX_dmbuffer
+# Extension #87 - skipped
+# Extension #88 - skipped
+# Extension #89 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #90
+# SGIX_shadow_ambient commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_shadow_ambient
+
+###############################################################################
+#
+# Extension #91 - GLX_SGIX_swap_group
+# Extension #92 - GLX_SGIX_swap_barrier
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #93
+# EXT_index_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_index_texture
+
+###############################################################################
+#
+# Extension #94
+# EXT_index_material commands
+#
+###############################################################################
+
+IndexMaterialEXT(face, mode)
+       return          void
+       param           face            MaterialFace in value
+       param           mode            IndexMaterialParameterEXT in value
+       category        EXT_index_material
+       version         1.1
+       extension       soft
+       glxflags        ignore
+       offset          538
+
+###############################################################################
+#
+# Extension #95
+# EXT_index_func commands
+#
+###############################################################################
+
+IndexFuncEXT(func, ref)
+       return          void
+       param           func            IndexFunctionEXT in value
+       param           ref             ClampedFloat32 in value
+       category        EXT_index_func
+       version         1.1
+       extension       soft
+       glxflags        ignore
+       offset          539
+
+###############################################################################
+#
+# Extension #96
+# EXT_index_array_formats commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_index_array_formats
+
+###############################################################################
+#
+# Extension #97
+# EXT_compiled_vertex_array commands
+#
+###############################################################################
+
+LockArraysEXT(first, count)
+       return          void
+       param           first           Int32 in value
+       param           count           SizeI in value
+       category        EXT_compiled_vertex_array
+       version         1.1
+       dlflags         notlistable
+       extension       soft
+       glxflags        ignore
+       offset          540
+
+UnlockArraysEXT()
+       return          void
+       category        EXT_compiled_vertex_array
+       version         1.1
+       dlflags         notlistable
+       extension       soft
+       glxflags        ignore
+       offset          541
+
+###############################################################################
+#
+# Extension #98
+# EXT_cull_vertex commands
+#
+###############################################################################
+
+CullParameterdvEXT(pname, params)
+       return          void
+       param           pname           CullParameterEXT in value
+       param           params          Float64 out array [4]
+       category        EXT_cull_vertex
+       version         1.1
+       dlflags         notlistable
+       extension       soft
+       glxflags        ignore
+       offset          542
+
+CullParameterfvEXT(pname, params)
+       return          void
+       param           pname           CullParameterEXT in value
+       param           params          Float32 out array [4]
+       category        EXT_cull_vertex
+       version         1.1
+       dlflags         notlistable
+       extension       soft
+       glxflags        ignore
+       offset          543
+
+###############################################################################
+#
+# Extension #99 - skipped
+# Extension #100 - GLU_EXT_nurbs_tessellator
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #101
+# SGIX_ycrcb commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_ycrcb
+
+###############################################################################
+#
+# Extension #102
+# SGIX_fragment_lighting commands
+#
+###############################################################################
+
+FragmentColorMaterialSGIX(face, mode)
+       return          void
+       param           face            MaterialFace in value
+       param           mode            MaterialParameter in value
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          476
+
+FragmentLightfSGIX(light, pname, param)
+       return          void
+       param           light           FragmentLightNameSGIX in value
+       param           pname           FragmentLightParameterSGIX in value
+       param           param           CheckedFloat32 in value
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          477
+
+FragmentLightfvSGIX(light, pname, params)
+       return          void
+       param           light           FragmentLightNameSGIX in value
+       param           pname           FragmentLightParameterSGIX in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          478
+
+FragmentLightiSGIX(light, pname, param)
+       return          void
+       param           light           FragmentLightNameSGIX in value
+       param           pname           FragmentLightParameterSGIX in value
+       param           param           CheckedInt32 in value
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          479
+
+FragmentLightivSGIX(light, pname, params)
+       return          void
+       param           light           FragmentLightNameSGIX in value
+       param           pname           FragmentLightParameterSGIX in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          480
+
+FragmentLightModelfSGIX(pname, param)
+       return          void
+       param           pname           FragmentLightModelParameterSGIX in value
+       param           param           CheckedFloat32 in value
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          481
+
+FragmentLightModelfvSGIX(pname, params)
+       return          void
+       param           pname           FragmentLightModelParameterSGIX in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          482
+
+FragmentLightModeliSGIX(pname, param)
+       return          void
+       param           pname           FragmentLightModelParameterSGIX in value
+       param           param           CheckedInt32 in value
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          483
+
+FragmentLightModelivSGIX(pname, params)
+       return          void
+       param           pname           FragmentLightModelParameterSGIX in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          484
+
+FragmentMaterialfSGIX(face, pname, param)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           param           CheckedFloat32 in value
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          485
+
+FragmentMaterialfvSGIX(face, pname, params)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          486
+
+FragmentMaterialiSGIX(face, pname, param)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           param           CheckedInt32 in value
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          487
+
+FragmentMaterialivSGIX(face, pname, params)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          488
+
+GetFragmentLightfvSGIX(light, pname, params)
+       return          void
+       param           light           FragmentLightNameSGIX in value
+       param           pname           FragmentLightParameterSGIX in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        SGIX_fragment_lighting
+       dlflags         notlistable
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          489
+
+GetFragmentLightivSGIX(light, pname, params)
+       return          void
+       param           light           FragmentLightNameSGIX in value
+       param           pname           FragmentLightParameterSGIX in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        SGIX_fragment_lighting
+       dlflags         notlistable
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          490
+
+GetFragmentMaterialfvSGIX(face, pname, params)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        SGIX_fragment_lighting
+       dlflags         notlistable
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          491
+
+GetFragmentMaterialivSGIX(face, pname, params)
+       return          void
+       param           face            MaterialFace in value
+       param           pname           MaterialParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        SGIX_fragment_lighting
+       dlflags         notlistable
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          492
+
+LightEnviSGIX(pname, param)
+       return          void
+       param           pname           LightEnvParameterSGIX in value
+       param           param           CheckedInt32 in value
+       category        SGIX_fragment_lighting
+       glxflags        ignore
+       version         1.0
+       extension
+       offset          493
+
+###############################################################################
+#
+# Extension #103 - skipped
+# Extension #104 - skipped
+# Extension #105 - skipped
+# Extension #106 - skipped
+# Extension #107 - skipped
+# Extension #108 - skipped
+# Extension #109 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #110
+# IBM_rasterpos_clip commands
+#
+###############################################################################
+
+# (none)
+newcategory: IBM_rasterpos_clip
+
+###############################################################################
+#
+# Extension #111
+# HP_texture_lighting commands
+#
+###############################################################################
+
+# (none)
+newcategory: HP_texture_lighting
+
+###############################################################################
+#
+# Extension #112
+# EXT_draw_range_elements commands
+#
+###############################################################################
+
+# Spec entries to be written
+DrawRangeElementsEXT(mode, start, end, count, type, indices)
+       return          void
+       param           mode            BeginMode in value
+       param           start           UInt32 in value
+       param           end             UInt32 in value
+       param           count           SizeI in value
+       param           type            DrawElementsType in value
+       param           indices         Void in array [COMPSIZE(count/type)]
+       category        EXT_draw_range_elements
+       dlflags         handcode
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       alias           DrawRangeElements
+
+###############################################################################
+#
+# Extension #113
+# WIN_phong_shading commands
+#
+###############################################################################
+
+# (none)
+newcategory: WIN_phong_shading
+
+###############################################################################
+#
+# Extension #114
+# WIN_specular_fog commands
+#
+###############################################################################
+
+# (none)
+newcategory: WIN_specular_fog
+
+###############################################################################
+#
+# Extension #115 - skipped
+# Extension #116 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #117
+# EXT_light_texture commands
+#
+###############################################################################
+
+# Spec entries to be written
+ApplyTextureEXT(mode)
+       return          void
+       param           mode            LightTextureModeEXT in value
+       category        EXT_light_texture
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TextureLightEXT(pname)
+       return          void
+       param           pname           LightTexturePNameEXT in value
+       category        EXT_light_texture
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TextureMaterialEXT(face, mode)
+       return          void
+       param           face            MaterialFace in value
+       param           mode            MaterialParameter in value
+       category        EXT_light_texture
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+###############################################################################
+#
+# Extension #118 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #119
+# SGIX_blend_alpha_minmax commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_blend_alpha_minmax
+
+###############################################################################
+#
+# Extension #120 - skipped
+# Extension #121 - skipped
+# Extension #122 - skipped
+# Extension #123 - skipped
+# Extension #124 - skipped
+# Extension #125 - skipped
+# Extension #126 - skipped
+# Extension #127 - skipped
+# Extension #128 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #129
+# EXT_bgra commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_bgra
+
+###############################################################################
+#
+# Extension #130 - skipped
+# Extension #131 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #132
+# SGIX_async commands
+#
+###############################################################################
+
+AsyncMarkerSGIX(marker)
+       return          void
+       param           marker          UInt32 in value
+       category        SGIX_async
+       version         1.0
+       glxflags        ignore
+       extension
+       offset          ?
+
+FinishAsyncSGIX(markerp)
+       return          Int32
+       param           markerp         UInt32 out array [1]
+       category        SGIX_async
+       version         1.0
+       dlflags         notlistable
+       glxflags        ignore
+       extension
+       offset          ?
+
+PollAsyncSGIX(markerp)
+       return          Int32
+       param           markerp         UInt32 out array [1]
+       category        SGIX_async
+       version         1.0
+       dlflags         notlistable
+       glxflags        ignore
+       extension
+       offset          ?
+
+GenAsyncMarkersSGIX(range)
+       return          UInt32
+       param           range           SizeI in value
+       category        SGIX_async
+       version         1.0
+       dlflags         notlistable
+       glxflags        ignore
+       extension
+       offset          ?
+
+DeleteAsyncMarkersSGIX(marker, range)
+       return          void
+       param           marker          UInt32 in value
+       param           range           SizeI in value
+       category        SGIX_async
+       version         1.0
+       dlflags         notlistable
+       glxflags        ignore
+       extension
+       offset          ?
+
+IsAsyncMarkerSGIX(marker)
+       return          Boolean
+       param           marker          UInt32 in value
+       category        SGIX_async
+       version         1.0
+       dlflags         notlistable
+       glxflags        ignore
+       extension
+       offset          ?
+
+###############################################################################
+#
+# Extension #133
+# SGIX_async_pixel commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_async_pixel
+
+###############################################################################
+#
+# Extension #134
+# SGIX_async_histogram commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_async_histogram
+
+###############################################################################
+#
+# Extension #135 - skipped (INTEL_texture_scissor was never implemented)
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #136
+# INTEL_parallel_arrays commands
+#
+###############################################################################
+
+VertexPointervINTEL(size, type, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            VertexPointerType in value
+       param           pointer         VoidPointer in array [4] retained
+       category        INTEL_parallel_arrays
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.1
+       offset          ?
+
+NormalPointervINTEL(type, pointer)
+       return          void
+       param           type            NormalPointerType in value
+       param           pointer         VoidPointer in array [4] retained
+       category        INTEL_parallel_arrays
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.1
+       offset          ?
+
+ColorPointervINTEL(size, type, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            VertexPointerType in value
+       param           pointer         VoidPointer in array [4] retained
+       category        INTEL_parallel_arrays
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.1
+       offset          ?
+
+TexCoordPointervINTEL(size, type, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            VertexPointerType in value
+       param           pointer         VoidPointer in array [4] retained
+       category        INTEL_parallel_arrays
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.1
+       offset          ?
+
+
+###############################################################################
+#
+# Extension #137
+# HP_occlusion_test commands
+#
+###############################################################################
+
+# (none)
+newcategory: HP_occlusion_test
+
+###############################################################################
+#
+# Extension #138
+# EXT_pixel_transform commands
+#
+###############################################################################
+
+PixelTransformParameteriEXT(target, pname, param)
+       return          void
+       param           target          PixelTransformTargetEXT in value
+       param           pname           PixelTransformPNameEXT in value
+       param           param           Int32 in value
+       category        EXT_pixel_transform
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+PixelTransformParameterfEXT(target, pname, param)
+       return          void
+       param           target          PixelTransformTargetEXT in value
+       param           pname           PixelTransformPNameEXT in value
+       param           param           Float32 in value
+       category        EXT_pixel_transform
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+PixelTransformParameterivEXT(target, pname, params)
+       return          void
+       param           target          PixelTransformTargetEXT in value
+       param           pname           PixelTransformPNameEXT in value
+       param           params          Int32 in array [1]
+       category        EXT_pixel_transform
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+PixelTransformParameterfvEXT(target, pname, params)
+       return          void
+       param           target          PixelTransformTargetEXT in value
+       param           pname           PixelTransformPNameEXT in value
+       param           params          Float32 in array [1]
+       category        EXT_pixel_transform
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+###############################################################################
+#
+# Extension #139
+# EXT_pixel_transform_color_table commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_pixel_transform_color_table
+
+###############################################################################
+#
+# Extension #140 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #141
+# EXT_shared_texture_palette commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_shared_texture_palette
+
+###############################################################################
+#
+# Extension #142 - GLX_SGIS_blended_overlay
+# Extension #143 - GLX_SGIS_shared_multisample
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #144
+# EXT_separate_specular_color commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_separate_specular_color
+
+###############################################################################
+#
+# Extension #145
+# EXT_secondary_color commands
+#
+###############################################################################
+
+SecondaryColor3bEXT(red, green, blue)
+       return          void
+       param           red             ColorB in value
+       param           green           ColorB in value
+       param           blue            ColorB in value
+       category        EXT_secondary_color
+       vectorequiv     SecondaryColor3bvEXT
+       version         1.1
+       alias           SecondaryColor3b
+
+SecondaryColor3bvEXT(v)
+       return          void
+       param           v               ColorB in array [3]
+       category        EXT_secondary_color
+       version         1.1
+       glxropcode      4126
+       alias           SecondaryColor3bv
+
+SecondaryColor3dEXT(red, green, blue)
+       return          void
+       param           red             ColorD in value
+       param           green           ColorD in value
+       param           blue            ColorD in value
+       category        EXT_secondary_color
+       vectorequiv     SecondaryColor3dvEXT
+       version         1.1
+       alias           SecondaryColor3d
+
+SecondaryColor3dvEXT(v)
+       return          void
+       param           v               ColorD in array [3]
+       category        EXT_secondary_color
+       version         1.1
+       glxropcode      4130
+       alias           SecondaryColor3dv
+
+SecondaryColor3fEXT(red, green, blue)
+       return          void
+       param           red             ColorF in value
+       param           green           ColorF in value
+       param           blue            ColorF in value
+       category        EXT_secondary_color
+       vectorequiv     SecondaryColor3fvEXT
+       version         1.1
+       alias           SecondaryColor3f
+
+SecondaryColor3fvEXT(v)
+       return          void
+       param           v               ColorF in array [3]
+       category        EXT_secondary_color
+       version         1.1
+       glxropcode      4129
+       alias           SecondaryColor3fv
+
+SecondaryColor3iEXT(red, green, blue)
+       return          void
+       param           red             ColorI in value
+       param           green           ColorI in value
+       param           blue            ColorI in value
+       category        EXT_secondary_color
+       vectorequiv     SecondaryColor3ivEXT
+       version         1.1
+       alias           SecondaryColor3i
+
+SecondaryColor3ivEXT(v)
+       return          void
+       param           v               ColorI in array [3]
+       category        EXT_secondary_color
+       version         1.1
+       glxropcode      4128
+       offset          568
+       alias           SecondaryColor3iv
+
+SecondaryColor3sEXT(red, green, blue)
+       return          void
+       param           red             ColorS in value
+       param           green           ColorS in value
+       param           blue            ColorS in value
+       category        EXT_secondary_color
+       vectorequiv     SecondaryColor3svEXT
+       version         1.1
+       alias           SecondaryColor3s
+
+SecondaryColor3svEXT(v)
+       return          void
+       param           v               ColorS in array [3]
+       category        EXT_secondary_color
+       version         1.1
+       glxropcode      4127
+       alias           SecondaryColor3sv
+
+SecondaryColor3ubEXT(red, green, blue)
+       return          void
+       param           red             ColorUB in value
+       param           green           ColorUB in value
+       param           blue            ColorUB in value
+       category        EXT_secondary_color
+       vectorequiv     SecondaryColor3ubvEXT
+       version         1.1
+       alias           SecondaryColor3ub
+
+SecondaryColor3ubvEXT(v)
+       return          void
+       param           v               ColorUB in array [3]
+       category        EXT_secondary_color
+       version         1.1
+       glxropcode      4131
+       alias           SecondaryColor3ubv
+
+SecondaryColor3uiEXT(red, green, blue)
+       return          void
+       param           red             ColorUI in value
+       param           green           ColorUI in value
+       param           blue            ColorUI in value
+       category        EXT_secondary_color
+       vectorequiv     SecondaryColor3uivEXT
+       version         1.1
+       alias           SecondaryColor3ui
+
+SecondaryColor3uivEXT(v)
+       return          void
+       param           v               ColorUI in array [3]
+       category        EXT_secondary_color
+       version         1.1
+       glxropcode      4133
+       alias           SecondaryColor3uiv
+
+SecondaryColor3usEXT(red, green, blue)
+       return          void
+       param           red             ColorUS in value
+       param           green           ColorUS in value
+       param           blue            ColorUS in value
+       category        EXT_secondary_color
+       vectorequiv     SecondaryColor3usvEXT
+       version         1.1
+       alias           SecondaryColor3us
+
+SecondaryColor3usvEXT(v)
+       return          void
+       param           v               ColorUS in array [3]
+       category        EXT_secondary_color
+       version         1.1
+       glxropcode      4132
+       alias           SecondaryColor3usv
+
+SecondaryColorPointerEXT(size, type, stride, pointer)
+       return          void
+       param           size            Int32 in value
+       param           type            ColorPointerType in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride)] retained
+       category        EXT_secondary_color
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode EXT
+       version         1.1
+       extension
+       alias           SecondaryColorPointer
+
+###############################################################################
+#
+# Extension #146
+# EXT_texture_env commands
+#
+###############################################################################
+
+# Dead extension - never implemented (removed from registry!)
+# (none)
+# newcategory: EXT_texture_env
+
+###############################################################################
+#
+# Extension #147
+# EXT_texture_perturb_normal commands
+#
+###############################################################################
+
+TextureNormalEXT(mode)
+       return          void
+       param           mode            TextureNormalModeEXT in value
+       category        EXT_texture_perturb_normal
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+###############################################################################
+#
+# Extension #148
+# EXT_multi_draw_arrays commands
+#
+###############################################################################
+
+# first and count are really 'in'
+MultiDrawArraysEXT(mode, first, count, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           first           Int32 out array [COMPSIZE(primcount)]
+       param           count           SizeI out array [COMPSIZE(primcount)]
+       param           primcount       SizeI in value
+       category        EXT_multi_draw_arrays
+       version         1.1
+       glxropcode      ?
+       alias           MultiDrawArrays
+
+MultiDrawElementsEXT(mode, count, type, indices, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           count           SizeI in array [COMPSIZE(primcount)]
+       param           type            DrawElementsType in value
+       param           indices         VoidPointer in array [COMPSIZE(primcount)]
+       param           primcount       SizeI in value
+       category        EXT_multi_draw_arrays
+       version         1.1
+       glxropcode      ?
+       alias           MultiDrawElements
+
+###############################################################################
+#
+# Extension #149
+# EXT_fog_coord commands
+#
+###############################################################################
+
+FogCoordfEXT(coord)
+       return          void
+       param           coord           CoordF in value
+       category        EXT_fog_coord
+       vectorequiv     FogCoordfvEXT
+       version         1.1
+       alias           FogCoordf
+
+FogCoordfvEXT(coord)
+       return          void
+       param           coord           CoordF in array [1]
+       category        EXT_fog_coord
+       version         1.1
+       glxropcode      4124
+       alias           FogCoordfv
+
+FogCoorddEXT(coord)
+       return          void
+       param           coord           CoordD in value
+       category        EXT_fog_coord
+       vectorequiv     FogCoorddvEXT
+       version         1.1
+       alias           FogCoordd
+
+FogCoorddvEXT(coord)
+       return          void
+       param           coord           CoordD in array [1]
+       category        EXT_fog_coord
+       version         1.1
+       glxropcode      4125
+       alias           FogCoorddv
+
+FogCoordPointerEXT(type, stride, pointer)
+       return          void
+       param           type            FogPointerTypeEXT in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride)] retained
+       category        EXT_fog_coord
+       dlflags         notlistable
+       version         1.1
+       glxflags        client-handcode server-handcode EXT
+       alias           FogCoordPointer
+
+###############################################################################
+#
+# Extension #150 - skipped
+# Extension #151 - skipped
+# Extension #152 - skipped
+# Extension #153 - skipped
+# Extension #154 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #155
+# REND_screen_coordinates commands
+#
+###############################################################################
+
+# (none)
+newcategory: REND_screen_coordinates
+
+###############################################################################
+#
+# Extension #156
+# EXT_coordinate_frame commands
+#
+###############################################################################
+
+Tangent3bEXT(tx, ty, tz)
+       return          void
+       param           tx              Int8 in value
+       param           ty              Int8 in value
+       param           tz              Int8 in value
+       category        EXT_coordinate_frame
+       vectorequiv     Tangent3bvEXT
+       version         1.1
+       offset          ?
+
+Tangent3bvEXT(v)
+       return          void
+       param           v               Int8 in array [3]
+       category        EXT_coordinate_frame
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Tangent3dEXT(tx, ty, tz)
+       return          void
+       param           tx              CoordD in value
+       param           ty              CoordD in value
+       param           tz              CoordD in value
+       category        EXT_coordinate_frame
+       vectorequiv     Tangent3dvEXT
+       version         1.1
+       offset          ?
+
+Tangent3dvEXT(v)
+       return          void
+       param           v               CoordD in array [3]
+       category        EXT_coordinate_frame
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Tangent3fEXT(tx, ty, tz)
+       return          void
+       param           tx              CoordF in value
+       param           ty              CoordF in value
+       param           tz              CoordF in value
+       category        EXT_coordinate_frame
+       vectorequiv     Tangent3fvEXT
+       version         1.1
+       offset          ?
+
+Tangent3fvEXT(v)
+       return          void
+       param           v               CoordF in array [3]
+       category        EXT_coordinate_frame
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Tangent3iEXT(tx, ty, tz)
+       return          void
+       param           tx              Int32 in value
+       param           ty              Int32 in value
+       param           tz              Int32 in value
+       category        EXT_coordinate_frame
+       vectorequiv     Tangent3ivEXT
+       version         1.1
+       offset          ?
+
+Tangent3ivEXT(v)
+       return          void
+       param           v               Int32 in array [3]
+       category        EXT_coordinate_frame
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Tangent3sEXT(tx, ty, tz)
+       return          void
+       param           tx              Int16 in value
+       param           ty              Int16 in value
+       param           tz              Int16 in value
+       category        EXT_coordinate_frame
+       vectorequiv     Tangent3svEXT
+       version         1.1
+       offset          ?
+
+Tangent3svEXT(v)
+       return          void
+       param           v               Int16 in array [3]
+       category        EXT_coordinate_frame
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Binormal3bEXT(bx, by, bz)
+       return          void
+       param           bx              Int8 in value
+       param           by              Int8 in value
+       param           bz              Int8 in value
+       category        EXT_coordinate_frame
+       vectorequiv     Binormal3bvEXT
+       version         1.1
+       offset          ?
+
+Binormal3bvEXT(v)
+       return          void
+       param           v               Int8 in array [3]
+       category        EXT_coordinate_frame
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Binormal3dEXT(bx, by, bz)
+       return          void
+       param           bx              CoordD in value
+       param           by              CoordD in value
+       param           bz              CoordD in value
+       category        EXT_coordinate_frame
+       vectorequiv     Binormal3dvEXT
+       version         1.1
+       offset          ?
+
+Binormal3dvEXT(v)
+       return          void
+       param           v               CoordD in array [3]
+       category        EXT_coordinate_frame
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Binormal3fEXT(bx, by, bz)
+       return          void
+       param           bx              CoordF in value
+       param           by              CoordF in value
+       param           bz              CoordF in value
+       category        EXT_coordinate_frame
+       vectorequiv     Binormal3fvEXT
+       version         1.1
+       offset          ?
+
+Binormal3fvEXT(v)
+       return          void
+       param           v               CoordF in array [3]
+       category        EXT_coordinate_frame
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Binormal3iEXT(bx, by, bz)
+       return          void
+       param           bx              Int32 in value
+       param           by              Int32 in value
+       param           bz              Int32 in value
+       category        EXT_coordinate_frame
+       vectorequiv     Binormal3ivEXT
+       version         1.1
+       offset          ?
+
+Binormal3ivEXT(v)
+       return          void
+       param           v               Int32 in array [3]
+       category        EXT_coordinate_frame
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Binormal3sEXT(bx, by, bz)
+       return          void
+       param           bx              Int16 in value
+       param           by              Int16 in value
+       param           bz              Int16 in value
+       category        EXT_coordinate_frame
+       vectorequiv     Binormal3svEXT
+       version         1.1
+       offset          ?
+
+Binormal3svEXT(v)
+       return          void
+       param           v               Int16 in array [3]
+       category        EXT_coordinate_frame
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TangentPointerEXT(type, stride, pointer)
+       return          void
+       param           type            TangentPointerTypeEXT in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride)] retained
+       category        EXT_coordinate_frame
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       offset          ?
+
+BinormalPointerEXT(type, stride, pointer)
+       return          void
+       param           type            BinormalPointerTypeEXT in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride)] retained
+       category        EXT_coordinate_frame
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       offset          ?
+
+###############################################################################
+#
+# Extension #157 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #158
+# EXT_texture_env_combine commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_env_combine
+
+###############################################################################
+#
+# Extension #159
+# APPLE_specular_vector commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_specular_vector
+
+###############################################################################
+#
+# Extension #160
+# APPLE_transform_hint commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_transform_hint
+
+###############################################################################
+#
+# Extension #161
+# SGIX_fog_scale commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_fog_scale
+
+###############################################################################
+#
+# Extension #162 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #163
+# SUNX_constant_data commands
+#
+###############################################################################
+
+FinishTextureSUNX()
+       return          void
+       category        SUNX_constant_data
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+###############################################################################
+#
+# Extension #164
+# SUN_global_alpha commands
+#
+###############################################################################
+
+GlobalAlphaFactorbSUN(factor)
+       return          void
+       param           factor          Int8 in value
+       category        SUN_global_alpha
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+GlobalAlphaFactorsSUN(factor)
+       return          void
+       param           factor          Int16 in value
+       category        SUN_global_alpha
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+GlobalAlphaFactoriSUN(factor)
+       return          void
+       param           factor          Int32 in value
+       category        SUN_global_alpha
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+GlobalAlphaFactorfSUN(factor)
+       return          void
+       param           factor          Float32 in value
+       category        SUN_global_alpha
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+GlobalAlphaFactordSUN(factor)
+       return          void
+       param           factor          Float64 in value
+       category        SUN_global_alpha
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+GlobalAlphaFactorubSUN(factor)
+       return          void
+       param           factor          UInt8 in value
+       category        SUN_global_alpha
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+GlobalAlphaFactorusSUN(factor)
+       return          void
+       param           factor          UInt16 in value
+       category        SUN_global_alpha
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+GlobalAlphaFactoruiSUN(factor)
+       return          void
+       param           factor          UInt32 in value
+       category        SUN_global_alpha
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+###############################################################################
+#
+# Extension #165
+# SUN_triangle_list commands
+#
+###############################################################################
+
+ReplacementCodeuiSUN(code)
+       return          void
+       param           code            UInt32 in value
+       category        SUN_triangle_list
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeusSUN(code)
+       return          void
+       param           code            UInt16 in value
+       category        SUN_triangle_list
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeubSUN(code)
+       return          void
+       param           code            UInt8 in value
+       category        SUN_triangle_list
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuivSUN(code)
+       return          void
+       param           code            UInt32 in array [COMPSIZE()]
+       category        SUN_triangle_list
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeusvSUN(code)
+       return          void
+       param           code            UInt16 in array [COMPSIZE()]
+       category        SUN_triangle_list
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeubvSUN(code)
+       return          void
+       param           code            UInt8 in array [COMPSIZE()]
+       category        SUN_triangle_list
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodePointerSUN(type, stride, pointer)
+       return          void
+       param           type            ReplacementCodeTypeSUN in value
+       param           stride          SizeI in value
+       param           pointer         VoidPointer in array [COMPSIZE(type/stride)] retained
+       category        SUN_triangle_list
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+###############################################################################
+#
+# Extension #166
+# SUN_vertex commands
+#
+###############################################################################
+
+Color4ubVertex2fSUN(r, g, b, a, x, y)
+       return          void
+       param           r               UInt8 in value
+       param           g               UInt8 in value
+       param           b               UInt8 in value
+       param           a               UInt8 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Color4ubVertex2fvSUN(c, v)
+       return          void
+       param           c               UInt8 in array [4]
+       param           v               Float32 in array [2]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Color4ubVertex3fSUN(r, g, b, a, x, y, z)
+       return          void
+       param           r               UInt8 in value
+       param           g               UInt8 in value
+       param           b               UInt8 in value
+       param           a               UInt8 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Color4ubVertex3fvSUN(c, v)
+       return          void
+       param           c               UInt8 in array [4]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Color3fVertex3fSUN(r, g, b, x, y, z)
+       return          void
+       param           r               Float32 in value
+       param           g               Float32 in value
+       param           b               Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Color3fVertex3fvSUN(c, v)
+       return          void
+       param           c               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Normal3fVertex3fSUN(nx, ny, nz, x, y, z)
+       return          void
+       param           nx              Float32 in value
+       param           ny              Float32 in value
+       param           nz              Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Normal3fVertex3fvSUN(n, v)
+       return          void
+       param           n               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Color4fNormal3fVertex3fSUN(r, g, b, a, nx, ny, nz, x, y, z)
+       return          void
+       param           r               Float32 in value
+       param           g               Float32 in value
+       param           b               Float32 in value
+       param           a               Float32 in value
+       param           nx              Float32 in value
+       param           ny              Float32 in value
+       param           nz              Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+Color4fNormal3fVertex3fvSUN(c, n, v)
+       return          void
+       param           c               Float32 in array [4]
+       param           n               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord2fVertex3fSUN(s, t, x, y, z)
+       return          void
+       param           s               Float32 in value
+       param           t               Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord2fVertex3fvSUN(tc, v)
+       return          void
+       param           tc              Float32 in array [2]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord4fVertex4fSUN(s, t, p, q, x, y, z, w)
+       return          void
+       param           s               Float32 in value
+       param           t               Float32 in value
+       param           p               Float32 in value
+       param           q               Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord4fVertex4fvSUN(tc, v)
+       return          void
+       param           tc              Float32 in array [4]
+       param           v               Float32 in array [4]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord2fColor4ubVertex3fSUN(s, t, r, g, b, a, x, y, z)
+       return          void
+       param           s               Float32 in value
+       param           t               Float32 in value
+       param           r               UInt8 in value
+       param           g               UInt8 in value
+       param           b               UInt8 in value
+       param           a               UInt8 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord2fColor4ubVertex3fvSUN(tc, c, v)
+       return          void
+       param           tc              Float32 in array [2]
+       param           c               UInt8 in array [4]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord2fColor3fVertex3fSUN(s, t, r, g, b, x, y, z)
+       return          void
+       param           s               Float32 in value
+       param           t               Float32 in value
+       param           r               Float32 in value
+       param           g               Float32 in value
+       param           b               Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord2fColor3fVertex3fvSUN(tc, c, v)
+       return          void
+       param           tc              Float32 in array [2]
+       param           c               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord2fNormal3fVertex3fSUN(s, t, nx, ny, nz, x, y, z)
+       return          void
+       param           s               Float32 in value
+       param           t               Float32 in value
+       param           nx              Float32 in value
+       param           ny              Float32 in value
+       param           nz              Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord2fNormal3fVertex3fvSUN(tc, n, v)
+       return          void
+       param           tc              Float32 in array [2]
+       param           n               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord2fColor4fNormal3fVertex3fSUN(s, t, r, g, b, a, nx, ny, nz, x, y, z)
+       return          void
+       param           s               Float32 in value
+       param           t               Float32 in value
+       param           r               Float32 in value
+       param           g               Float32 in value
+       param           b               Float32 in value
+       param           a               Float32 in value
+       param           nx              Float32 in value
+       param           ny              Float32 in value
+       param           nz              Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord2fColor4fNormal3fVertex3fvSUN(tc, c, n, v)
+       return          void
+       param           tc              Float32 in array [2]
+       param           c               Float32 in array [4]
+       param           n               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord4fColor4fNormal3fVertex4fSUN(s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w)
+       return          void
+       param           s               Float32 in value
+       param           t               Float32 in value
+       param           p               Float32 in value
+       param           q               Float32 in value
+       param           r               Float32 in value
+       param           g               Float32 in value
+       param           b               Float32 in value
+       param           a               Float32 in value
+       param           nx              Float32 in value
+       param           ny              Float32 in value
+       param           nz              Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoord4fColor4fNormal3fVertex4fvSUN(tc, c, n, v)
+       return          void
+       param           tc              Float32 in array [4]
+       param           c               Float32 in array [4]
+       param           n               Float32 in array [3]
+       param           v               Float32 in array [4]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiVertex3fSUN(rc, x, y, z)
+       return          void
+       param           rc              ReplacementCodeSUN in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiVertex3fvSUN(rc, v)
+       return          void
+       param           rc              ReplacementCodeSUN in array [1]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiColor4ubVertex3fSUN(rc, r, g, b, a, x, y, z)
+       return          void
+       param           rc              ReplacementCodeSUN in value
+       param           r               UInt8 in value
+       param           g               UInt8 in value
+       param           b               UInt8 in value
+       param           a               UInt8 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiColor4ubVertex3fvSUN(rc, c, v)
+       return          void
+       param           rc              ReplacementCodeSUN in array [1]
+       param           c               UInt8 in array [4]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiColor3fVertex3fSUN(rc, r, g, b, x, y, z)
+       return          void
+       param           rc              ReplacementCodeSUN in value
+       param           r               Float32 in value
+       param           g               Float32 in value
+       param           b               Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiColor3fVertex3fvSUN(rc, c, v)
+       return          void
+       param           rc              ReplacementCodeSUN in array [1]
+       param           c               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiNormal3fVertex3fSUN(rc, nx, ny, nz, x, y, z)
+       return          void
+       param           rc              ReplacementCodeSUN in value
+       param           nx              Float32 in value
+       param           ny              Float32 in value
+       param           nz              Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiNormal3fVertex3fvSUN(rc, n, v)
+       return          void
+       param           rc              ReplacementCodeSUN in array [1]
+       param           n               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiColor4fNormal3fVertex3fSUN(rc, r, g, b, a, nx, ny, nz, x, y, z)
+       return          void
+       param           rc              ReplacementCodeSUN in value
+       param           r               Float32 in value
+       param           g               Float32 in value
+       param           b               Float32 in value
+       param           a               Float32 in value
+       param           nx              Float32 in value
+       param           ny              Float32 in value
+       param           nz              Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiColor4fNormal3fVertex3fvSUN(rc, c, n, v)
+       return          void
+       param           rc              ReplacementCodeSUN in array [1]
+       param           c               Float32 in array [4]
+       param           n               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiTexCoord2fVertex3fSUN(rc, s, t, x, y, z)
+       return          void
+       param           rc              ReplacementCodeSUN in value
+       param           s               Float32 in value
+       param           t               Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiTexCoord2fVertex3fvSUN(rc, tc, v)
+       return          void
+       param           rc              ReplacementCodeSUN in array [1]
+       param           tc              Float32 in array [2]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(rc, s, t, nx, ny, nz, x, y, z)
+       return          void
+       param           rc              ReplacementCodeSUN in value
+       param           s               Float32 in value
+       param           t               Float32 in value
+       param           nx              Float32 in value
+       param           ny              Float32 in value
+       param           nz              Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(rc, tc, n, v)
+       return          void
+       param           rc              ReplacementCodeSUN in array [1]
+       param           tc              Float32 in array [2]
+       param           n               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(rc, s, t, r, g, b, a, nx, ny, nz, x, y, z)
+       return          void
+       param           rc              ReplacementCodeSUN in value
+       param           s               Float32 in value
+       param           t               Float32 in value
+       param           r               Float32 in value
+       param           g               Float32 in value
+       param           b               Float32 in value
+       param           a               Float32 in value
+       param           nx              Float32 in value
+       param           ny              Float32 in value
+       param           nz              Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(rc, tc, c, n, v)
+       return          void
+       param           rc              ReplacementCodeSUN in array [1]
+       param           tc              Float32 in array [2]
+       param           c               Float32 in array [4]
+       param           n               Float32 in array [3]
+       param           v               Float32 in array [3]
+       category        SUN_vertex
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+###############################################################################
+#
+# Extension #167 - WGL_EXT_display_color_table
+# Extension #168 - WGL_EXT_extensions_string
+# Extension #169 - WGL_EXT_make_current_read
+# Extension #170 - WGL_EXT_pixel_format
+# Extension #171 - WGL_EXT_pbuffer
+# Extension #172 - WGL_EXT_swap_control
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #173
+# EXT_blend_func_separate commands (also INGR_blend_func_separate)
+#
+###############################################################################
+
+BlendFuncSeparateEXT(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)
+       return          void
+       param           sfactorRGB      BlendFuncSeparateParameterEXT in value
+       param           dfactorRGB      BlendFuncSeparateParameterEXT in value
+       param           sfactorAlpha    BlendFuncSeparateParameterEXT in value
+       param           dfactorAlpha    BlendFuncSeparateParameterEXT in value
+       category        EXT_blend_func_separate
+       glxropcode      4134
+       version         1.0
+       extension
+       alias           BlendFuncSeparate
+
+BlendFuncSeparateINGR(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)
+       return          void
+       param           sfactorRGB      BlendFuncSeparateParameterEXT in value
+       param           dfactorRGB      BlendFuncSeparateParameterEXT in value
+       param           sfactorAlpha    BlendFuncSeparateParameterEXT in value
+       param           dfactorAlpha    BlendFuncSeparateParameterEXT in value
+       category        INGR_blend_func_separate
+       glxropcode      4134
+       version         1.0
+       extension
+       alias           BlendFuncSeparateEXT
+
+###############################################################################
+#
+# Extension #174
+# INGR_color_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: INGR_color_clamp
+
+###############################################################################
+#
+# Extension #175
+# INGR_interlace_read commands
+#
+###############################################################################
+
+# (none)
+newcategory: INGR_interlace_read
+
+###############################################################################
+#
+# Extension #176
+# EXT_stencil_wrap commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_stencil_wrap
+
+###############################################################################
+#
+# Extension #177 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #178
+# EXT_422_pixels commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_422_pixels
+
+###############################################################################
+#
+# Extension #179
+# NV_texgen_reflection commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texgen_reflection
+
+###############################################################################
+#
+# Extension #???
+# @   EXT_texture_cube_map commands
+#
+###############################################################################
+
+# (none)
+
+###############################################################################
+#
+# Extension #180 - skipped
+# Extension #181 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #182
+# SUN_convolution_border_modes commands
+#
+###############################################################################
+
+# (none)
+newcategory: SUN_convolution_border_modes
+
+###############################################################################
+#
+# Extension #183 - GLX_SUN_get_transparent_index
+# Extension #184 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #185
+# EXT_texture_env_add commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_env_add
+
+###############################################################################
+#
+# Extension #186
+# EXT_texture_lod_bias commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_lod_bias
+
+###############################################################################
+#
+# Extension #187
+# EXT_texture_filter_anisotropic commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_filter_anisotropic
+
+###############################################################################
+#
+# Extension #188
+# EXT_vertex_weighting commands
+#
+###############################################################################
+
+# GLX stuff to be written
+VertexWeightfEXT(weight)
+       return          void
+       param           weight          Float32 in value
+       category        EXT_vertex_weighting
+       vectorequiv     VertexWeightfvEXT
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          494
+
+VertexWeightfvEXT(weight)
+       return          void
+       param           weight          Float32 in array [1]
+       category        EXT_vertex_weighting
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxropcode      4135
+       glxflags        ignore
+       offset          495
+
+VertexWeightPointerEXT(size, type, stride, pointer)
+       return          void
+       param           size            SizeI in value
+       param           type            VertexWeightPointerTypeEXT in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(type/stride)] retained
+       category        EXT_vertex_weighting
+       version         1.1
+       extension       soft WINSOFT NV10
+       dlflags         notlistable
+       glxflags        ignore
+       offset          496
+
+###############################################################################
+#
+# Extension #189
+# NV_light_max_exponent commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_light_max_exponent
+
+###############################################################################
+#
+# Extension #190
+# NV_vertex_array_range commands
+#
+###############################################################################
+
+FlushVertexArrayRangeNV()
+       return          void
+       category        NV_vertex_array_range
+       version         1.1
+       extension       soft WINSOFT NV10
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode ignore
+       offset          497
+
+VertexArrayRangeNV(length, pointer)
+       return          void
+       param           length          SizeI in value
+       param           pointer         Void in array [COMPSIZE(length)] retained
+       category        NV_vertex_array_range
+       version         1.1
+       extension       soft WINSOFT NV10
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode ignore
+       offset          498
+
+###############################################################################
+#
+# Extension #191
+# NV_register_combiners commands
+#
+###############################################################################
+
+CombinerParameterfvNV(pname, params)
+       return          void
+       param           pname           CombinerParameterNV in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxropcode      4137
+       glxflags        ignore
+       offset          499
+
+CombinerParameterfNV(pname, param)
+       return          void
+       param           pname           CombinerParameterNV in value
+       param           param           Float32 in value
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxropcode      4136
+       glxflags        ignore
+       offset          500
+
+CombinerParameterivNV(pname, params)
+       return          void
+       param           pname           CombinerParameterNV in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxropcode      4139
+       glxflags        ignore
+       offset          501
+
+CombinerParameteriNV(pname, param)
+       return          void
+       param           pname           CombinerParameterNV in value
+       param           param           Int32 in value
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxropcode      4138
+       glxflags        ignore
+       offset          502
+
+CombinerInputNV(stage, portion, variable, input, mapping, componentUsage)
+       return          void
+       param           stage           CombinerStageNV in value
+       param           portion         CombinerPortionNV in value
+       param           variable        CombinerVariableNV in value
+       param           input           CombinerRegisterNV in value
+       param           mapping         CombinerMappingNV in value
+       param           componentUsage  CombinerComponentUsageNV in value
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxropcode      4140
+       glxflags        ignore
+       offset          503
+
+CombinerOutputNV(stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum)
+       return          void
+       param           stage           CombinerStageNV in value
+       param           portion         CombinerPortionNV in value
+       param           abOutput        CombinerRegisterNV in value
+       param           cdOutput        CombinerRegisterNV in value
+       param           sumOutput       CombinerRegisterNV in value
+       param           scale           CombinerScaleNV in value
+       param           bias            CombinerBiasNV in value
+       param           abDotProduct    Boolean in value
+       param           cdDotProduct    Boolean in value
+       param           muxSum          Boolean in value
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxropcode      4141
+       glxflags        ignore
+       offset          504
+
+FinalCombinerInputNV(variable, input, mapping, componentUsage)
+       return          void
+       param           variable        CombinerVariableNV in value
+       param           input           CombinerRegisterNV in value
+       param           mapping         CombinerMappingNV in value
+       param           componentUsage  CombinerComponentUsageNV in value
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxropcode      4142
+       glxflags        ignore
+       offset          505
+
+GetCombinerInputParameterfvNV(stage, portion, variable, pname, params)
+       return          void
+       param           stage           CombinerStageNV in value
+       param           portion         CombinerPortionNV in value
+       param           variable        CombinerVariableNV in value
+       param           pname           CombinerParameterNV in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1270
+       glxflags        ignore
+       offset          506
+
+GetCombinerInputParameterivNV(stage, portion, variable, pname, params)
+       return          void
+       param           stage           CombinerStageNV in value
+       param           portion         CombinerPortionNV in value
+       param           variable        CombinerVariableNV in value
+       param           pname           CombinerParameterNV in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1271
+       glxflags        ignore
+       offset          507
+
+GetCombinerOutputParameterfvNV(stage, portion, pname, params)
+       return          void
+       param           stage           CombinerStageNV in value
+       param           portion         CombinerPortionNV in value
+       param           pname           CombinerParameterNV in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1272
+       glxflags        ignore
+       offset          508
+
+GetCombinerOutputParameterivNV(stage, portion, pname, params)
+       return          void
+       param           stage           CombinerStageNV in value
+       param           portion         CombinerPortionNV in value
+       param           pname           CombinerParameterNV in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1273
+       glxflags        ignore
+       offset          509
+
+GetFinalCombinerInputParameterfvNV(variable, pname, params)
+       return          void
+       param           variable        CombinerVariableNV in value
+       param           pname           CombinerParameterNV in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1274
+       glxflags        ignore
+       offset          510
+
+GetFinalCombinerInputParameterivNV(variable, pname, params)
+       return          void
+       param           variable        CombinerVariableNV in value
+       param           pname           CombinerParameterNV in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        NV_register_combiners
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1275
+       glxflags        ignore
+       offset          511
+
+###############################################################################
+#
+# Extension #192
+# NV_fog_distance commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_fog_distance
+
+###############################################################################
+#
+# Extension #193
+# NV_texgen_emboss commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texgen_emboss
+
+###############################################################################
+#
+# Extension #194
+# NV_blend_square commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_blend_square
+
+###############################################################################
+#
+# Extension #195
+# NV_texture_env_combine4 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_env_combine4
+
+###############################################################################
+#
+# Extension #196
+# MESA_resize_buffers commands
+#
+###############################################################################
+
+ResizeBuffersMESA()
+       return          void
+       category        MESA_resize_buffers
+       version         1.0
+       glxropcode      ?
+       offset          512
+
+###############################################################################
+#
+# Extension #197
+# MESA_window_pos commands
+#
+# Note that the 2- and 3-component versions are now aliases of ARB
+# entry points.
+#
+###############################################################################
+
+WindowPos2dMESA(x, y)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       category        MESA_window_pos
+       vectorequiv     WindowPos2dvMESA
+       version         1.0
+       alias           WindowPos2dARB
+
+WindowPos2dvMESA(v)
+       return          void
+       param           v               CoordD in array [2]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       alias           WindowPos2dvARB
+
+WindowPos2fMESA(x, y)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       category        MESA_window_pos
+       vectorequiv     WindowPos2fvMESA
+       version         1.0
+       alias           WindowPos2fARB
+
+WindowPos2fvMESA(v)
+       return          void
+       param           v               CoordF in array [2]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       alias           WindowPos2fvARB
+
+WindowPos2iMESA(x, y)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       category        MESA_window_pos
+       vectorequiv     WindowPos2ivMESA
+       version         1.0
+       alias           WindowPos2iARB
+
+WindowPos2ivMESA(v)
+       return          void
+       param           v               CoordI in array [2]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       alias           WindowPos2ivARB
+
+WindowPos2sMESA(x, y)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       category        MESA_window_pos
+       vectorequiv     WindowPos2svMESA
+       version         1.0
+       alias           WindowPos2sARB
+
+WindowPos2svMESA(v)
+       return          void
+       param           v               CoordS in array [2]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       alias           WindowPos2svARB
+
+WindowPos3dMESA(x, y, z)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       param           z               CoordD in value
+       vectorequiv     WindowPos3dvMESA
+       category        MESA_window_pos
+       version         1.0
+       alias           WindowPos3dARB
+
+WindowPos3dvMESA(v)
+       return          void
+       param           v               CoordD in array [3]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       alias           WindowPos3dvARB
+
+WindowPos3fMESA(x, y, z)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       param           z               CoordF in value
+       category        MESA_window_pos
+       vectorequiv     WindowPos3fvMESA
+       version         1.0
+       alias           WindowPos3fARB
+
+WindowPos3fvMESA(v)
+       return          void
+       param           v               CoordF in array [3]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       alias           WindowPos3fvARB
+
+WindowPos3iMESA(x, y, z)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       param           z               CoordI in value
+       category        MESA_window_pos
+       vectorequiv     WindowPos3ivMESA
+       version         1.0
+       alias           WindowPos3iARB
+
+WindowPos3ivMESA(v)
+       return          void
+       param           v               CoordI in array [3]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       alias           WindowPos3ivARB
+
+WindowPos3sMESA(x, y, z)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       param           z               CoordS in value
+       category        MESA_window_pos
+       vectorequiv     WindowPos3svMESA
+       version         1.0
+       alias           WindowPos3sARB
+
+WindowPos3svMESA(v)
+       return          void
+       param           v               CoordS in array [3]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       alias           WindowPos3svARB
+
+WindowPos4dMESA(x, y, z, w)
+       return          void
+       param           x               CoordD in value
+       param           y               CoordD in value
+       param           z               CoordD in value
+       param           w               CoordD in value
+       vectorequiv     WindowPos4dvMESA
+       category        MESA_window_pos
+       version         1.0
+       offset          529
+
+WindowPos4dvMESA(v)
+       return          void
+       param           v               CoordD in array [4]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       offset          530
+
+WindowPos4fMESA(x, y, z, w)
+       return          void
+       param           x               CoordF in value
+       param           y               CoordF in value
+       param           z               CoordF in value
+       param           w               CoordF in value
+       category        MESA_window_pos
+       vectorequiv     WindowPos4fvMESA
+       version         1.0
+       offset          531
+
+WindowPos4fvMESA(v)
+       return          void
+       param           v               CoordF in array [4]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       offset          532
+
+WindowPos4iMESA(x, y, z, w)
+       return          void
+       param           x               CoordI in value
+       param           y               CoordI in value
+       param           z               CoordI in value
+       param           w               CoordI in value
+       category        MESA_window_pos
+       vectorequiv     WindowPos4ivMESA
+       version         1.0
+       offset          533
+
+WindowPos4ivMESA(v)
+       return          void
+       param           v               CoordI in array [4]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       offset          534
+
+WindowPos4sMESA(x, y, z, w)
+       return          void
+       param           x               CoordS in value
+       param           y               CoordS in value
+       param           z               CoordS in value
+       param           w               CoordS in value
+       category        MESA_window_pos
+       vectorequiv     WindowPos4svMESA
+       version         1.0
+       offset          535
+
+WindowPos4svMESA(v)
+       return          void
+       param           v               CoordS in array [4]
+       category        MESA_window_pos
+       version         1.0
+       glxropcode      ?
+       offset          536
+
+###############################################################################
+#
+# Extension #198
+# EXT_texture_compression_s3tc commands
+#
+###############################################################################
+
+#@@ (none yet)
+
+###############################################################################
+#
+# Extension #199
+# IBM_cull_vertex commands
+#
+###############################################################################
+
+# (none)
+newcategory: IBM_cull_vertex
+
+###############################################################################
+#
+# Extension #200
+# IBM_multimode_draw_arrays commands
+#
+###############################################################################
+
+MultiModeDrawArraysIBM(mode, first, count, primcount, modestride)
+       return          void
+       param           mode            BeginMode in array [COMPSIZE(primcount)]
+       param           first           Int32 in array [COMPSIZE(primcount)]
+       param           count           SizeI in array [COMPSIZE(primcount)]
+       param           primcount       SizeI in value
+       param           modestride      Int32 in value
+       category        IBM_multimode_draw_arrays
+       version         1.1
+       glxropcode      ?
+       offset          708
+
+
+MultiModeDrawElementsIBM(mode, count, type, indices, primcount, modestride)
+       return          void
+       param           mode            BeginMode in array [COMPSIZE(primcount)]
+       param           count           SizeI in array [COMPSIZE(primcount)]
+       param           type            DrawElementsType in value
+       param           indices         ConstVoidPointer in array [COMPSIZE(primcount)]
+       param           primcount       SizeI in value
+       param           modestride      Int32 in value
+       category        IBM_multimode_draw_arrays
+       version         1.1
+       glxropcode      ?
+       offset          709
+
+###############################################################################
+#
+# Extension #201
+# IBM_vertex_array_lists commands
+#
+###############################################################################
+
+ColorPointerListIBM(size, type, stride, pointer, ptrstride)
+       return          void
+       param           size            Int32 in value
+       param           type            ColorPointerType in value
+       param           stride          Int32 in value
+       param           pointer         VoidPointer in array [COMPSIZE(size/type/stride)] retained
+       param           ptrstride       Int32 in value
+       category        IBM_vertex_array_lists
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+SecondaryColorPointerListIBM(size, type, stride, pointer, ptrstride)
+       return          void
+       param           size            Int32 in value
+       param           type            SecondaryColorPointerTypeIBM in value
+       param           stride          Int32 in value
+       param           pointer         VoidPointer in array [COMPSIZE(size/type/stride)] retained
+       param           ptrstride       Int32 in value
+       category        IBM_vertex_array_lists
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+EdgeFlagPointerListIBM(stride, pointer, ptrstride)
+       return          void
+       param           stride          Int32 in value
+       param           pointer         BooleanPointer in array [COMPSIZE(stride)] retained
+       param           ptrstride       Int32 in value
+       category        IBM_vertex_array_lists
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+FogCoordPointerListIBM(type, stride, pointer, ptrstride)
+       return          void
+       param           type            FogPointerTypeIBM in value
+       param           stride          Int32 in value
+       param           pointer         VoidPointer in array [COMPSIZE(type/stride)] retained
+       param           ptrstride       Int32 in value
+       category        IBM_vertex_array_lists
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+IndexPointerListIBM(type, stride, pointer, ptrstride)
+       return          void
+       param           type            IndexPointerType in value
+       param           stride          Int32 in value
+       param           pointer         VoidPointer in array [COMPSIZE(type/stride)] retained
+       param           ptrstride       Int32 in value
+       category        IBM_vertex_array_lists
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+NormalPointerListIBM(type, stride, pointer, ptrstride)
+       return          void
+       param           type            NormalPointerType in value
+       param           stride          Int32 in value
+       param           pointer         VoidPointer in array [COMPSIZE(type/stride)] retained
+       param           ptrstride       Int32 in value
+       category        IBM_vertex_array_lists
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+TexCoordPointerListIBM(size, type, stride, pointer, ptrstride)
+       return          void
+       param           size            Int32 in value
+       param           type            TexCoordPointerType in value
+       param           stride          Int32 in value
+       param           pointer         VoidPointer in array [COMPSIZE(size/type/stride)] retained
+       param           ptrstride       Int32 in value
+       category        IBM_vertex_array_lists
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+VertexPointerListIBM(size, type, stride, pointer, ptrstride)
+       return          void
+       param           size            Int32 in value
+       param           type            VertexPointerType in value
+       param           stride          Int32 in value
+       param           pointer         VoidPointer in array [COMPSIZE(size/type/stride)] retained
+       param           ptrstride       Int32 in value
+       category        IBM_vertex_array_lists
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+###############################################################################
+#
+# Extension #202
+# SGIX_subsample commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_subsample
+
+###############################################################################
+#
+# Extension #203
+# SGIX_ycrcba commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_ycrcba
+
+###############################################################################
+#
+# Extension #204
+# SGIX_ycrcb_subsample commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_ycrcb_subsample
+
+###############################################################################
+#
+# Extension #205
+# SGIX_depth_pass_instrument commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_depth_pass_instrument
+
+###############################################################################
+#
+# Extension #206
+# 3DFX_texture_compression_FXT1 commands
+#
+###############################################################################
+
+# (none)
+newcategory: 3DFX_texture_compression_FXT1
+
+###############################################################################
+#
+# Extension #207
+# 3DFX_multisample commands
+#
+###############################################################################
+
+# (none)
+newcategory: 3DFX_multisample
+
+###############################################################################
+#
+# Extension #208
+# 3DFX_tbuffer commands
+#
+###############################################################################
+
+TbufferMask3DFX(mask)
+       return          void
+       param           mask            UInt32 in value
+       category        3DFX_tbuffer
+       version         1.2
+       glxropcode      ?
+       offset          553
+
+###############################################################################
+#
+# Extension #209
+# EXT_multisample commands
+#
+###############################################################################
+
+SampleMaskEXT(value, invert)
+       return          void
+       param           value           ClampedFloat32 in value
+       param           invert          Boolean in value
+       category        EXT_multisample
+       version         1.0
+       glxropcode      ?
+       extension
+       offset          446
+
+SamplePatternEXT(pattern)
+       return          void
+       param           pattern         SamplePatternEXT in value
+       category        EXT_multisample
+       version         1.0
+       glxropcode      ?
+       glxflags
+       extension
+       offset          447
+
+###############################################################################
+#
+# Extension #210
+# SGIX_vertex_preclip commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_vertex_preclip
+
+###############################################################################
+#
+# Extension #211
+# SGIX_convolution_accuracy commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_convolution_accuracy
+
+###############################################################################
+#
+# Extension #212
+# SGIX_resample commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_resample
+
+###############################################################################
+#
+# Extension #213
+# SGIS_point_line_texgen commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_point_line_texgen
+
+###############################################################################
+#
+# Extension #214
+# SGIS_texture_color_mask commands
+#
+###############################################################################
+
+TextureColorMaskSGIS(red, green, blue, alpha)
+       return          void
+       param           red             Boolean in value
+       param           green           Boolean in value
+       param           blue            Boolean in value
+       param           alpha           Boolean in value
+       category        SGIS_texture_color_mask
+       version         1.1
+       glxropcode      2082
+       extension
+       offset          ?
+
+###############################################################################
+#
+# Extension #215 - GLX_MESA_copy_sub_buffer
+# Extension #216 - GLX_MESA_pixmap_colormap
+# Extension #217 - GLX_MESA_release_buffers
+# Extension #218 - GLX_MESA_set_3dfx_mode
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #219
+# SGIX_igloo_interface commands
+#
+###############################################################################
+
+IglooInterfaceSGIX(pname, params)
+       return          void
+       dlflags         notlistable
+       param           pname           IglooFunctionSelectSGIX in value
+       param           params          IglooParameterSGIX in array [COMPSIZE(pname)]
+       category        SGIX_igloo_interface
+       version         1.0
+       glxflags        SGI ignore
+       extension
+       glxropcode      200
+       offset          ?
+
+###############################################################################
+#
+# Extension #220
+# EXT_texture_env_dot3 commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_env_dot3
+
+###############################################################################
+#
+# Extension #221
+# ATI_texture_mirror_once commands
+#
+###############################################################################
+# (none)
+newcategory: ATI_texture_mirror_once
+
+###############################################################################
+#
+# Extension #222
+# NV_fence commands
+#
+###############################################################################
+
+DeleteFencesNV(n, fences)
+       return          void
+       param           n               SizeI in value
+       param           fences          FenceNV in array [n]
+       category        NV_fence
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1276
+       glxflags        ignore
+       offset          647
+
+GenFencesNV(n, fences)
+       return          void
+       param           n               SizeI in value
+       param           fences          FenceNV out array [n]
+       category        NV_fence
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1277
+       glxflags        ignore
+       offset          648
+
+IsFenceNV(fence)
+       return          Boolean
+       param           fence           FenceNV in value
+       category        NV_fence
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1278
+       glxflags        ignore
+       offset          649
+
+TestFenceNV(fence)
+       return          Boolean
+       param           fence           FenceNV in value
+       category        NV_fence
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1279
+       glxflags        ignore
+       offset          650
+
+GetFenceivNV(fence, pname, params)
+       return          void
+       param           fence           FenceNV in value
+       param           pname           FenceParameterNameNV in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        NV_fence
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1280
+       glxflags        ignore
+       offset          651
+
+FinishFenceNV(fence)
+       return          void
+       param           fence           FenceNV in value
+       category        NV_fence
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1312
+       glxflags        ignore
+       offset          652
+
+SetFenceNV(fence, condition)
+       return          void
+       param           fence           FenceNV in value
+       param           condition       FenceConditionNV in value
+       category        NV_fence
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          653
+
+###############################################################################
+#
+# Extension #225
+# NV_evaluators commands
+#
+###############################################################################
+
+MapControlPointsNV(target, index, type, ustride, vstride, uorder, vorder, packed, points)
+       return          void
+       param           target          EvalTargetNV in value
+       param           index           UInt32 in value
+       param           type            MapTypeNV in value
+       param           ustride         SizeI in value
+       param           vstride         SizeI in value
+       param           uorder          CheckedInt32 in value
+       param           vorder          CheckedInt32 in value
+       param           packed          Boolean in value
+       param           points          Void in array [COMPSIZE(target/uorder/vorder)]
+       category        NV_evaluators
+       dlflags         handcode
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          ?
+
+MapParameterivNV(target, pname, params)
+       return          void
+       param           target          EvalTargetNV in value
+       param           pname           MapParameterNV in value
+       param           params          CheckedInt32 in array [COMPSIZE(target/pname)]
+       category        NV_evaluators
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          ?
+
+MapParameterfvNV(target, pname, params)
+       return          void
+       param           target          EvalTargetNV in value
+       param           pname           MapParameterNV in value
+       param           params          CheckedFloat32 in array [COMPSIZE(target/pname)]
+       category        NV_evaluators
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          ?
+
+GetMapControlPointsNV(target, index, type, ustride, vstride, packed, points)
+       return          void
+       param           target          EvalTargetNV in value
+       param           index           UInt32 in value
+       param           type            MapTypeNV in value
+       param           ustride         SizeI in value
+       param           vstride         SizeI in value
+       param           packed          Boolean in value
+       param           points          Void out array [COMPSIZE(target)]
+       category        NV_evaluators
+       dlflags         notlistable
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          ?
+
+GetMapParameterivNV(target, pname, params)
+       return          void
+       param           target          EvalTargetNV in value
+       param           pname           MapParameterNV in value
+       param           params          Int32 out array [COMPSIZE(target/pname)]
+       category        NV_evaluators
+       dlflags         notlistable
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          ?
+
+GetMapParameterfvNV(target, pname, params)
+       return          void
+       param           target          EvalTargetNV in value
+       param           pname           MapParameterNV in value
+       param           params          Float32 out array [COMPSIZE(target/pname)]
+       category        NV_evaluators
+       dlflags         notlistable
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          ?
+
+GetMapAttribParameterivNV(target, index, pname, params)
+       return          void
+       param           target          EvalTargetNV in value
+       param           index           UInt32 in value
+       param           pname           MapAttribParameterNV in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        NV_evaluators
+       dlflags         notlistable
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          ?
+
+GetMapAttribParameterfvNV(target, index, pname, params)
+       return          void
+       param           target          EvalTargetNV in value
+       param           index           UInt32 in value
+       param           pname           MapAttribParameterNV in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        NV_evaluators
+       dlflags         notlistable
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          ?
+
+EvalMapsNV(target, mode)
+       return          void
+       param           target          EvalTargetNV in value
+       param           mode            EvalMapsModeNV in value
+       category        NV_evaluators
+       version         1.1
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #226
+# NV_packed_depth_stencil commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_packed_depth_stencil
+
+###############################################################################
+#
+# Extension #227
+# NV_register_combiners2 commands
+#
+###############################################################################
+
+CombinerStageParameterfvNV(stage, pname, params)
+       return          void
+       param           stage           CombinerStageNV in value
+       param           pname           CombinerParameterNV in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        NV_register_combiners2
+       version         1.1
+       extension
+       glxflags        ignore
+       offset          ?
+
+GetCombinerStageParameterfvNV(stage, pname, params)
+       return          void
+       param           stage           CombinerStageNV in value
+       param           pname           CombinerParameterNV in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        NV_register_combiners2
+       version         1.1
+       extension
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #228
+# NV_texture_compression_vtc commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_compression_vtc
+
+###############################################################################
+#
+# Extension #229
+# NV_texture_rectangle commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_rectangle
+
+###############################################################################
+#
+# Extension #230
+# NV_texture_shader commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_shader
+
+###############################################################################
+#
+# Extension #231
+# NV_texture_shader2 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_shader2
+
+###############################################################################
+#
+# Extension #232
+# NV_vertex_array_range2 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_vertex_array_range2
+
+###############################################################################
+#
+# Extension #233
+# NV_vertex_program commands
+#
+###############################################################################
+
+AreProgramsResidentNV(n, programs, residences)
+       return          Boolean
+       param           n               SizeI in value
+       param           programs        UInt32 in array [n]
+       param           residences      Boolean out array [n]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       glxvendorpriv   1293
+       offset          578
+
+BindProgramNV(target, id)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           id              UInt32 in value
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4180
+       alias           BindProgramARB
+
+DeleteProgramsNV(n, programs)
+       return          void
+       param           n               SizeI in value
+       param           programs        UInt32 in array [n]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1294
+       alias           DeleteProgramsARB
+
+ExecuteProgramNV(target, id, params)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           id              UInt32 in value
+       param           params          Float32 in array [4]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       glxropcode      4181
+       offset          581
+
+GenProgramsNV(n, programs)
+       return          void
+       param           n               SizeI in value
+       param           programs        UInt32 out array [n]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1295
+       alias           GenProgramsARB
+
+GetProgramParameterdvNV(target, index, pname, params)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           index           UInt32 in value
+       param           pname           VertexAttribEnumNV in value
+       param           params          Float64 out array [4]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       glxvendorpriv   1297
+       offset          583
+
+GetProgramParameterfvNV(target, index, pname, params)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           index           UInt32 in value
+       param           pname           VertexAttribEnumNV in value
+       param           params          Float32 out array [4]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       glxvendorpriv   1296
+       offset          584
+
+# GetProgramParameterSigneddvNV(target, index, pname, params)
+#        return          void
+#        param           target          VertexAttribEnumNV in value
+#        param           index           Int32 in value
+#        param           pname           VertexAttribEnumNV in value
+#        param           params          Float64 out array [4]
+#        category        NV_vertex_program1_1_dcc
+#        dlflags         notlistable
+#        version         1.2
+#        extension       soft WINSOFT NV20
+#        glxflags        ignore
+#        offset          ?
+#
+# GetProgramParameterSignedfvNV(target, index, pname, params)
+#        return          void
+#        param           target          VertexAttribEnumNV in value
+#        param           index           Int32 in value
+#        param           pname           VertexAttribEnumNV in value
+#        param           params          Float32 out array [4]
+#        category        NV_vertex_program1_1_dcc
+#        dlflags         notlistable
+#        version         1.2
+#        extension       soft WINSOFT NV20
+#        glxflags        ignore
+#        offset          ?
+
+GetProgramivNV(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           VertexAttribEnumNV in value
+       param           params          Int32 out array [4]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       glxvendorpriv   1298
+       offset          585
+
+GetProgramStringNV(id, pname, program)
+       return          void
+       param           id              UInt32 in value
+       param           pname           VertexAttribEnumNV in value
+       param           program         ProgramCharacterNV out array [COMPSIZE(id/pname)]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       glxvendorpriv   1299
+       offset          586
+
+GetTrackMatrixivNV(target, address, pname, params)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           address         UInt32 in value
+       param           pname           VertexAttribEnumNV in value
+       param           params          Int32 out array [1]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       glxvendorpriv   1300
+       offset          587
+
+GetVertexAttribdvNV(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribEnumNV in value
+       param           params          Float64 out array [1]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1301
+       alias           GetVertexAttribdv
+
+GetVertexAttribfvNV(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribEnumNV in value
+       param           params          Float32 out array [1]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1302
+       alias           GetVertexAttribfv
+
+GetVertexAttribivNV(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribEnumNV in value
+       param           params          Int32 out array [1]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1303
+       alias           GetVertexAttribiv
+
+GetVertexAttribPointervNV(index, pname, pointer)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribEnumNV in value
+       param           pointer         VoidPointer out array [1]
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       alias           GetVertexAttribPointerv
+
+IsProgramNV(id)
+       return          Boolean
+       param           id              UInt32 in value
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxvendorpriv   1304
+       alias           IsProgram
+
+LoadProgramNV(target, id, len, program)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           id              UInt32 in value
+       param           len             SizeI in value
+       param           program         UInt8 in array [len]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4183
+       offset          593
+
+ProgramParameter4dNV(target, index, x, y, z, w)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     ProgramParameter4dvNV
+       extension       soft WINSOFT NV10
+       offset          594
+
+ProgramParameter4dvNV(target, index, v)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           index           UInt32 in value
+       param           v               Float64 in array [4]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4185
+       offset          595
+
+ProgramParameter4fNV(target, index, x, y, z, w)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     ProgramParameter4fvNV
+       extension       soft WINSOFT NV10
+       offset          596
+
+ProgramParameter4fvNV(target, index, v)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           index           UInt32 in value
+       param           v               Float32 in array [4]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4184
+       offset          597
+
+#??? 'count' was SizeI in the latest NVIDIA gl.spec, but UInt32 in the
+#??? extension specification in the registry.
+ProgramParameters4dvNV(target, index, count, v)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           index           UInt32 in value
+       param           count           UInt32 in value
+       param           v               Float64 in array [count*4]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4187
+       offset          598
+
+#??? 'count' was SizeI in the latest NVIDIA gl.spec, but UInt32 in the
+#??? extension specification in the registry.
+ProgramParameters4fvNV(target, index, count, v)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           index           UInt32 in value
+       param           count           UInt32 in value
+       param           v               Float32 in array [count*4]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4186
+       offset          599
+
+# ProgramParameterSigned4dNV(target, index, x, y, z, w)
+#        return          void
+#        param           target          VertexAttribEnumNV in value
+#        param           index           Int32 in value
+#        param           x               Float64 in value
+#        param           y               Float64 in value
+#        param           z               Float64 in value
+#        param           w               Float64 in value
+#        category        NV_vertex_program1_1_dcc
+#        version         1.2
+#        vectorequiv     ProgramParameterSigned4dvNV
+#        extension       soft WINSOFT NV20
+#        offset          ?
+#
+# ProgramParameterSigned4dvNV(target, index, v)
+#        return          void
+#        param           target          VertexAttribEnumNV in value
+#        param           index           Int32 in value
+#        param           v               Float64 in array [4]
+#        category        NV_vertex_program1_1_dcc
+#        version         1.2
+#        extension       soft WINSOFT NV20
+#        glxflags        ignore
+#        offset          ?
+#
+# ProgramParameterSigned4fNV(target, index, x, y, z, w)
+#        return          void
+#        param           target          VertexAttribEnumNV in value
+#        param           index           Int32 in value
+#        param           x               Float32 in value
+#        param           y               Float32 in value
+#        param           z               Float32 in value
+#        param           w               Float32 in value
+#        category        NV_vertex_program1_1_dcc
+#        version         1.2
+#        vectorequiv     ProgramParameterSigned4fvNV
+#        extension       soft WINSOFT NV20
+#        offset          ?
+#
+# ProgramParameterSigned4fvNV(target, index, v)
+#        return          void
+#        param           target          VertexAttribEnumNV in value
+#        param           index           Int32 in value
+#        param           v               Float32 in array [4]
+#        category        NV_vertex_program1_1_dcc
+#        version         1.2
+#        extension       soft WINSOFT NV20
+#        glxflags        ignore
+#        offset          ?
+#
+# ProgramParametersSigned4dvNV(target, index, count, v)
+#        return          void
+#        param           target          VertexAttribEnumNV in value
+#        param           index           Int32 in value
+#        param           count           SizeI in value
+#        param           v               Float64 in array [count*4]
+#        category        NV_vertex_program1_1_dcc
+#        version         1.2
+#        extension       soft WINSOFT NV20
+#        glxflags        ignore
+#        offset          ?
+#
+# ProgramParametersSigned4fvNV(target, index, count, v)
+#        return          void
+#        param           target          VertexAttribEnumNV in value
+#        param           index           Int32 in value
+#        param           count           SizeI in value
+#        param           v               Float32 in array [count*4]
+#        category        NV_vertex_program1_1_dcc
+#        version         1.2
+#        extension       soft WINSOFT NV20
+#        glxflags        ignore
+#        offset          ?
+
+RequestResidentProgramsNV(n, programs)
+       return          void
+       param           n               SizeI in value
+       param           programs        UInt32 in array [n]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4182
+       offset          600
+
+TrackMatrixNV(target, address, matrix, transform)
+       return          void
+       param           target          VertexAttribEnumNV in value
+       param           address         UInt32 in value
+       param           matrix          VertexAttribEnumNV in value
+       param           transform       VertexAttribEnumNV in value
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4188
+       offset          601
+
+VertexAttribPointerNV(index, fsize, type, stride, pointer)
+       return          void
+       param           index           UInt32 in value
+       param           fsize           Int32 in value
+       param           type            VertexAttribEnumNV in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(fsize/type/stride)] retained
+       category        NV_vertex_program
+       dlflags         notlistable
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxflags        ignore
+       offset          602
+
+VertexAttrib1dNV(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib1dvNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib1d
+
+VertexAttrib1dvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [1]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4197
+       alias           VertexAttrib1dv
+
+VertexAttrib1fNV(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib1fvNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib1f
+
+VertexAttrib1fvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [1]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4193
+       alias           VertexAttrib1fv
+
+VertexAttrib1sNV(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib1svNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib1s
+
+VertexAttrib1svNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [1]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4189
+       alias           VertexAttrib1sv
+
+VertexAttrib2dNV(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib2dvNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib2d
+
+VertexAttrib2dvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [2]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4198
+       alias           VertexAttrib2dv
+
+VertexAttrib2fNV(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib2fvNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib2f
+
+VertexAttrib2fvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [2]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4194
+       alias           VertexAttrib2fv
+
+VertexAttrib2sNV(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib2svNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib2s
+
+VertexAttrib2svNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [2]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4190
+       alias           VertexAttrib2sv
+
+VertexAttrib3dNV(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib3dvNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib3d
+
+VertexAttrib3dvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [3]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4199
+       alias           VertexAttrib3dv
+
+VertexAttrib3fNV(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib3fvNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib3f
+
+VertexAttrib3fvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [3]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4195
+       alias           VertexAttrib3fv
+
+VertexAttrib3sNV(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       param           z               Int16 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib3svNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib3s
+
+VertexAttrib3svNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [3]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4191
+       alias           VertexAttrib3sv
+
+VertexAttrib4dNV(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib4dvNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4d
+
+VertexAttrib4dvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float64 in array [4]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4200
+       alias           VertexAttrib4dv
+
+VertexAttrib4fNV(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib4fvNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4f
+
+VertexAttrib4fvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Float32 in array [4]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4196
+       alias           VertexAttrib4fv
+
+VertexAttrib4sNV(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       param           z               Int16 in value
+       param           w               Int16 in value
+       category        NV_vertex_program
+       version         1.2
+       vectorequiv     VertexAttrib4svNV
+       extension       soft WINSOFT NV10
+       alias           VertexAttrib4s
+
+VertexAttrib4svNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [4]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4192
+       alias           VertexAttrib4sv
+
+VertexAttrib4ubNV(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               ColorUB in value
+       param           y               ColorUB in value
+       param           z               ColorUB in value
+       param           w               ColorUB in value
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       vectorequiv     VertexAttrib4ubvNV
+       alias           VertexAttrib4Nub
+
+VertexAttrib4ubvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               ColorUB in array [4]
+       category        NV_vertex_program
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4201
+       alias           VertexAttrib4Nubv
+
+VertexAttribs1dvNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Float64 in array [count]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4210
+       offset          629
+
+VertexAttribs1fvNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Float32 in array [count]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4206
+       offset          630
+
+VertexAttribs1svNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Int16 in array [count]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4202
+       offset          631
+
+VertexAttribs2dvNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Float64 in array [count*2]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4211
+       offset          632
+
+VertexAttribs2fvNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Float32 in array [count*2]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4207
+       offset          633
+
+VertexAttribs2svNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Int16 in array [count*2]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4203
+       offset          634
+
+VertexAttribs3dvNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Float64 in array [count*3]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4212
+       offset          635
+
+VertexAttribs3fvNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Float32 in array [count*3]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4208
+       offset          636
+
+VertexAttribs3svNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Int16 in array [count*3]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4204
+       offset          637
+
+VertexAttribs4dvNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Float64 in array [count*4]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4213
+       offset          638
+
+VertexAttribs4fvNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Float32 in array [count*4]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4209
+       offset          639
+
+VertexAttribs4svNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               Int16 in array [count*4]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4205
+       offset          640
+
+VertexAttribs4ubvNV(index, count, v)
+       return          void
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           v               ColorUB in array [count*4]
+       category        NV_vertex_program
+       dlflags         handcode
+       version         1.2
+       extension       soft WINSOFT NV10
+       glxropcode      4214
+       offset          641
+
+
+###############################################################################
+#
+# Extension #234 - GLX_SGIX_visual_select_group
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #235
+# SGIX_texture_coordinate_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_coordinate_clamp
+
+###############################################################################
+#
+# Extension #236
+# SGIX_scalebias_hint commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_scalebias_hint
+
+###############################################################################
+#
+# Extension #237 - GLX_OML_swap_method commands
+# Extension #238 - GLX_OML_sync_control commands
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #239
+# OML_interlace commands
+#
+###############################################################################
+
+# (none)
+newcategory: OML_interlace
+
+###############################################################################
+#
+# Extension #240
+# OML_subsample commands
+#
+###############################################################################
+
+# (none)
+newcategory: OML_subsample
+
+###############################################################################
+#
+# Extension #241
+# OML_resample commands
+#
+###############################################################################
+
+# (none)
+newcategory: OML_resample
+
+###############################################################################
+#
+# Extension #242 - WGL_OML_sync_control commands
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #243
+# NV_copy_depth_to_color commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_copy_depth_to_color
+
+###############################################################################
+#
+# Extension #244
+# ATI_envmap_bumpmap commands
+#
+###############################################################################
+
+TexBumpParameterivATI(pname, param)
+       return          void
+       param           pname           TexBumpParameterATI in value
+       param           param           Int32 in array [COMPSIZE(pname)]
+       category        ATI_envmap_bumpmap
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexBumpParameterfvATI(pname, param)
+       return          void
+       param           pname           TexBumpParameterATI in value
+       param           param           Float32 in array [COMPSIZE(pname)]
+       category        ATI_envmap_bumpmap
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetTexBumpParameterivATI(pname, param)
+       return          void
+       param           pname           GetTexBumpParameterATI in value
+       param           param           Int32 out array [COMPSIZE(pname)]
+       category        ATI_envmap_bumpmap
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetTexBumpParameterfvATI(pname, param)
+       return          void
+       param           pname           GetTexBumpParameterATI in value
+       param           param           Float32 out array [COMPSIZE(pname)]
+       category        ATI_envmap_bumpmap
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #245
+# ATI_fragment_shader commands
+#
+###############################################################################
+
+GenFragmentShadersATI(range)
+       return          UInt32
+       param           range           UInt32 in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindFragmentShaderATI(id)
+       return          void
+       param           id              UInt32 in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DeleteFragmentShaderATI(id)
+       return          void
+       param           id              UInt32 in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BeginFragmentShaderATI()
+       return          void
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+EndFragmentShaderATI()
+       return          void
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+PassTexCoordATI(dst, coord, swizzle)
+       return          void
+       param           dst             UInt32 in value
+       param           coord           UInt32 in value
+       param           swizzle         SwizzleOpATI in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SampleMapATI(dst, interp, swizzle)
+       return          void
+       param           dst             UInt32 in value
+       param           interp          UInt32 in value
+       param           swizzle         SwizzleOpATI in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ColorFragmentOp1ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod)
+       return          void
+       param           op              FragmentOpATI in value
+       param           dst             UInt32 in value
+       param           dstMask         UInt32 in value
+       param           dstMod          UInt32 in value
+       param           arg1            UInt32 in value
+       param           arg1Rep         UInt32 in value
+       param           arg1Mod         UInt32 in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ColorFragmentOp2ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod)
+       return          void
+       param           op              FragmentOpATI in value
+       param           dst             UInt32 in value
+       param           dstMask         UInt32 in value
+       param           dstMod          UInt32 in value
+       param           arg1            UInt32 in value
+       param           arg1Rep         UInt32 in value
+       param           arg1Mod         UInt32 in value
+       param           arg2            UInt32 in value
+       param           arg2Rep         UInt32 in value
+       param           arg2Mod         UInt32 in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ColorFragmentOp3ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod)
+       return          void
+       param           op              FragmentOpATI in value
+       param           dst             UInt32 in value
+       param           dstMask         UInt32 in value
+       param           dstMod          UInt32 in value
+       param           arg1            UInt32 in value
+       param           arg1Rep         UInt32 in value
+       param           arg1Mod         UInt32 in value
+       param           arg2            UInt32 in value
+       param           arg2Rep         UInt32 in value
+       param           arg2Mod         UInt32 in value
+       param           arg3            UInt32 in value
+       param           arg3Rep         UInt32 in value
+       param           arg3Mod         UInt32 in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+AlphaFragmentOp1ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod)
+       return          void
+       param           op              FragmentOpATI in value
+       param           dst             UInt32 in value
+       param           dstMod          UInt32 in value
+       param           arg1            UInt32 in value
+       param           arg1Rep         UInt32 in value
+       param           arg1Mod         UInt32 in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+AlphaFragmentOp2ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod)
+       return          void
+       param           op              FragmentOpATI in value
+       param           dst             UInt32 in value
+       param           dstMod          UInt32 in value
+       param           arg1            UInt32 in value
+       param           arg1Rep         UInt32 in value
+       param           arg1Mod         UInt32 in value
+       param           arg2            UInt32 in value
+       param           arg2Rep         UInt32 in value
+       param           arg2Mod         UInt32 in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+AlphaFragmentOp3ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod)
+       return          void
+       param           op              FragmentOpATI in value
+       param           dst             UInt32 in value
+       param           dstMod          UInt32 in value
+       param           arg1            UInt32 in value
+       param           arg1Rep         UInt32 in value
+       param           arg1Mod         UInt32 in value
+       param           arg2            UInt32 in value
+       param           arg2Rep         UInt32 in value
+       param           arg2Mod         UInt32 in value
+       param           arg3            UInt32 in value
+       param           arg3Rep         UInt32 in value
+       param           arg3Mod         UInt32 in value
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SetFragmentShaderConstantATI(dst, value)
+       return          void
+       param           dst             UInt32 in value
+       param           value           ConstFloat32 in array [4]
+       category        ATI_fragment_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #246
+# ATI_pn_triangles commands
+#
+###############################################################################
+
+PNTrianglesiATI(pname, param)
+       return          void
+       param           pname           PNTrianglesPNameATI in value
+       param           param           Int32 in value
+       category        ATI_pn_triangles
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+PNTrianglesfATI(pname, param)
+       return          void
+       param           pname           PNTrianglesPNameATI in value
+       param           param           Float32 in value
+       category        ATI_pn_triangles
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #247
+# ATI_vertex_array_object commands
+#
+###############################################################################
+
+NewObjectBufferATI(size, pointer, usage)
+       return          UInt32
+       param           size            SizeI in value
+       param           pointer         ConstVoid in array [size]
+       param           usage           ArrayObjectUsageATI in value
+       category        ATI_vertex_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsObjectBufferATI(buffer)
+       return          Boolean
+       param           buffer          UInt32 in value
+       category        ATI_vertex_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UpdateObjectBufferATI(buffer, offset, size, pointer, preserve)
+       return          void
+       param           buffer          UInt32 in value
+       param           offset          UInt32 in value
+       param           size            SizeI in value
+       param           pointer         ConstVoid in array [size]
+       param           preserve        PreserveModeATI in value
+       category        ATI_vertex_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetObjectBufferfvATI(buffer, pname, params)
+       return          void
+       param           buffer          UInt32 in value
+       param           pname           ArrayObjectPNameATI in value
+       param           params          Float32 out array [1]
+       category        ATI_vertex_array_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetObjectBufferivATI(buffer, pname, params)
+       return          void
+       param           buffer          UInt32 in value
+       param           pname           ArrayObjectPNameATI in value
+       param           params          Int32 out array [1]
+       category        ATI_vertex_array_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+FreeObjectBufferATI(buffer)
+       return          void
+       param           buffer          UInt32 in value
+       category        ATI_vertex_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ArrayObjectATI(array, size, type, stride, buffer, offset)
+       return          void
+       param           array           EnableCap in value
+       param           size            Int32 in value
+       param           type            ScalarType in value
+       param           stride          SizeI in value
+       param           buffer          UInt32 in value
+       param           offset          UInt32 in value
+       category        ATI_vertex_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetArrayObjectfvATI(array, pname, params)
+       return          void
+       param           array           EnableCap in value
+       param           pname           ArrayObjectPNameATI in value
+       param           params          Float32 out array [1]
+       category        ATI_vertex_array_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetArrayObjectivATI(array, pname, params)
+       return          void
+       param           array           EnableCap in value
+       param           pname           ArrayObjectPNameATI in value
+       param           params          Int32 out array [1]
+       category        ATI_vertex_array_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+VariantArrayObjectATI(id, type, stride, buffer, offset)
+       return          void
+       param           id              UInt32 in value
+       param           type            ScalarType in value
+       param           stride          SizeI in value
+       param           buffer          UInt32 in value
+       param           offset          UInt32 in value
+       category        ATI_vertex_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetVariantArrayObjectfvATI(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           ArrayObjectPNameATI in value
+       param           params          Float32 out array [1]
+       category        ATI_vertex_array_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVariantArrayObjectivATI(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           ArrayObjectPNameATI in value
+       param           params          Int32 out array [1]
+       category        ATI_vertex_array_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #248
+# EXT_vertex_shader commands
+#
+###############################################################################
+
+BeginVertexShaderEXT()
+       return          void
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+EndVertexShaderEXT()
+       return          void
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindVertexShaderEXT(id)
+       return          void
+       param           id              UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GenVertexShadersEXT(range)
+       return          UInt32
+       param           range           UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DeleteVertexShaderEXT(id)
+       return          void
+       param           id              UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ShaderOp1EXT(op, res, arg1)
+       return          void
+       param           op              VertexShaderOpEXT in value
+       param           res             UInt32 in value
+       param           arg1            UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ShaderOp2EXT(op, res, arg1, arg2)
+       return          void
+       param           op              VertexShaderOpEXT in value
+       param           res             UInt32 in value
+       param           arg1            UInt32 in value
+       param           arg2            UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ShaderOp3EXT(op, res, arg1, arg2, arg3)
+       return          void
+       param           op              VertexShaderOpEXT in value
+       param           res             UInt32 in value
+       param           arg1            UInt32 in value
+       param           arg2            UInt32 in value
+       param           arg3            UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SwizzleEXT(res, in, outX, outY, outZ, outW)
+       return          void
+       param           res             UInt32 in value
+       param           in              UInt32 in value
+       param           outX            VertexShaderCoordOutEXT in value
+       param           outY            VertexShaderCoordOutEXT in value
+       param           outZ            VertexShaderCoordOutEXT in value
+       param           outW            VertexShaderCoordOutEXT in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+WriteMaskEXT(res, in, outX, outY, outZ, outW)
+       return          void
+       param           res             UInt32 in value
+       param           in              UInt32 in value
+       param           outX            VertexShaderWriteMaskEXT in value
+       param           outY            VertexShaderWriteMaskEXT in value
+       param           outZ            VertexShaderWriteMaskEXT in value
+       param           outW            VertexShaderWriteMaskEXT in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+InsertComponentEXT(res, src, num)
+       return          void
+       param           res             UInt32 in value
+       param           src             UInt32 in value
+       param           num             UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ExtractComponentEXT(res, src, num)
+       return          void
+       param           res             UInt32 in value
+       param           src             UInt32 in value
+       param           num             UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GenSymbolsEXT(datatype, storagetype, range, components)
+       return          UInt32
+       param           datatype        DataTypeEXT in value
+       param           storagetype     VertexShaderStorageTypeEXT in value
+       param           range           ParameterRangeEXT in value
+       param           components      UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SetInvariantEXT(id, type, addr)
+       return          void
+       param           id              UInt32 in value
+       param           type            ScalarType in value
+       param           addr            Void in array [COMPSIZE(id/type)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SetLocalConstantEXT(id, type, addr)
+       return          void
+       param           id              UInt32 in value
+       param           type            ScalarType in value
+       param           addr            Void in array [COMPSIZE(id/type)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VariantbvEXT(id, addr)
+       return          void
+       param           id              UInt32 in value
+       param           addr            Int8 in array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VariantsvEXT(id, addr)
+       return          void
+       param           id              UInt32 in value
+       param           addr            Int16 in array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VariantivEXT(id, addr)
+       return          void
+       param           id              UInt32 in value
+       param           addr            Int32 in array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VariantfvEXT(id, addr)
+       return          void
+       param           id              UInt32 in value
+       param           addr            Float32 in array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VariantdvEXT(id, addr)
+       return          void
+       param           id              UInt32 in value
+       param           addr            Float64 in array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VariantubvEXT(id, addr)
+       return          void
+       param           id              UInt32 in value
+       param           addr            UInt8 in array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VariantusvEXT(id, addr)
+       return          void
+       param           id              UInt32 in value
+       param           addr            UInt16 in array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VariantuivEXT(id, addr)
+       return          void
+       param           id              UInt32 in value
+       param           addr            UInt32 in array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VariantPointerEXT(id, type, stride, addr)
+       return          void
+       param           id              UInt32 in value
+       param           type            ScalarType in value
+       param           stride          UInt32 in value
+       param           addr            Void in array [COMPSIZE(id/type/stride)]
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+EnableVariantClientStateEXT(id)
+       return          void
+       param           id              UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DisableVariantClientStateEXT(id)
+       return          void
+       param           id              UInt32 in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindLightParameterEXT(light, value)
+       return          UInt32
+       param           light           LightName in value
+       param           value           LightParameter in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindMaterialParameterEXT(face, value)
+       return          UInt32
+       param           face            MaterialFace in value
+       param           value           MaterialParameter in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindTexGenParameterEXT(unit, coord, value)
+       return          UInt32
+       param           unit            TextureUnit in value
+       param           coord           TextureCoordName in value
+       param           value           TextureGenParameter in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindTextureUnitParameterEXT(unit, value)
+       return          UInt32
+       param           unit            TextureUnit in value
+       param           value           VertexShaderTextureUnitParameter in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindParameterEXT(value)
+       return          UInt32
+       param           value           VertexShaderParameterEXT in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsVariantEnabledEXT(id, cap)
+       return          Boolean
+       param           id              UInt32 in value
+       param           cap             VariantCapEXT in value
+       category        EXT_vertex_shader
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetVariantBooleanvEXT(id, value, data)
+       return          void
+       param           id              UInt32 in value
+       param           value           GetVariantValueEXT in value
+       param           data            Boolean out array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVariantIntegervEXT(id, value, data)
+       return          void
+       param           id              UInt32 in value
+       param           value           GetVariantValueEXT in value
+       param           data            Int32 out array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVariantFloatvEXT(id, value, data)
+       return          void
+       param           id              UInt32 in value
+       param           value           GetVariantValueEXT in value
+       param           data            Float32 out array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVariantPointervEXT(id, value, data)
+       return          void
+       param           id              UInt32 in value
+       param           value           GetVariantValueEXT in value
+       param           data            VoidPointer out array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetInvariantBooleanvEXT(id, value, data)
+       return          void
+       param           id              UInt32 in value
+       param           value           GetVariantValueEXT in value
+       param           data            Boolean out array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetInvariantIntegervEXT(id, value, data)
+       return          void
+       param           id              UInt32 in value
+       param           value           GetVariantValueEXT in value
+       param           data            Int32 out array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetInvariantFloatvEXT(id, value, data)
+       return          void
+       param           id              UInt32 in value
+       param           value           GetVariantValueEXT in value
+       param           data            Float32 out array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetLocalConstantBooleanvEXT(id, value, data)
+       return          void
+       param           id              UInt32 in value
+       param           value           GetVariantValueEXT in value
+       param           data            Boolean out array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetLocalConstantIntegervEXT(id, value, data)
+       return          void
+       param           id              UInt32 in value
+       param           value           GetVariantValueEXT in value
+       param           data            Int32 out array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetLocalConstantFloatvEXT(id, value, data)
+       return          void
+       param           id              UInt32 in value
+       param           value           GetVariantValueEXT in value
+       param           data            Float32 out array [COMPSIZE(id)]
+       category        EXT_vertex_shader
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #249
+# ATI_vertex_streams commands
+#
+###############################################################################
+
+VertexStream1sATI(stream, x)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Int16 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream1svATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int16 in array [1]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream1iATI(stream, x)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Int32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream1ivATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int32 in array [1]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream1fATI(stream, x)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Float32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream1fvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Float32 in array [1]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream1dATI(stream, x)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Float64 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream1dvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Float64 in array [1]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream2sATI(stream, x, y)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream2svATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int16 in array [2]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream2iATI(stream, x, y)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream2ivATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int32 in array [2]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream2fATI(stream, x, y)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream2fvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Float32 in array [2]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream2dATI(stream, x, y)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream2dvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Float64 in array [2]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream3sATI(stream, x, y, z)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       param           z               Int16 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream3svATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int16 in array [3]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream3iATI(stream, x, y, z)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       param           z               Int32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream3ivATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int32 in array [3]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream3fATI(stream, x, y, z)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream3fvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Float32 in array [3]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream3dATI(stream, x, y, z)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream3dvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Float64 in array [3]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream4sATI(stream, x, y, z, w)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Int16 in value
+       param           y               Int16 in value
+       param           z               Int16 in value
+       param           w               Int16 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream4svATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int16 in array [4]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream4iATI(stream, x, y, z, w)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       param           z               Int32 in value
+       param           w               Int32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream4ivATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int32 in array [4]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream4fATI(stream, x, y, z, w)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream4fvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Float32 in array [4]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream4dATI(stream, x, y, z, w)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexStream4dvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Float64 in array [4]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalStream3bATI(stream, nx, ny, nz)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           nx              Int8 in value
+       param           ny              Int8 in value
+       param           nz              Int8 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalStream3bvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int8 in array [3]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalStream3sATI(stream, nx, ny, nz)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           nx              Int16 in value
+       param           ny              Int16 in value
+       param           nz              Int16 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalStream3svATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int16 in array [3]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalStream3iATI(stream, nx, ny, nz)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           nx              Int32 in value
+       param           ny              Int32 in value
+       param           nz              Int32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalStream3ivATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Int32 in array [3]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalStream3fATI(stream, nx, ny, nz)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           nx              Float32 in value
+       param           ny              Float32 in value
+       param           nz              Float32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalStream3fvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Float32 in array [3]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalStream3dATI(stream, nx, ny, nz)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           nx              Float64 in value
+       param           ny              Float64 in value
+       param           nz              Float64 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalStream3dvATI(stream, coords)
+       return          void
+       param           stream          VertexStreamATI in value
+       param           coords          Float64 in array [3]
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ClientActiveVertexStreamATI(stream)
+       return          void
+       param           stream          VertexStreamATI in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexBlendEnviATI(pname, param)
+       return          void
+       param           pname           VertexStreamATI in value
+       param           param           Int32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexBlendEnvfATI(pname, param)
+       return          void
+       param           pname           VertexStreamATI in value
+       param           param           Float32 in value
+       category        ATI_vertex_streams
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #250 - WGL_I3D_digital_video_control
+# Extension #251 - WGL_I3D_gamma
+# Extension #252 - WGL_I3D_genlock
+# Extension #253 - WGL_I3D_image_buffer
+# Extension #254 - WGL_I3D_swap_frame_lock
+# Extension #255 - WGL_I3D_swap_frame_usage
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #256
+# ATI_element_array commands
+#
+###############################################################################
+
+ElementPointerATI(type, pointer)
+       return          void
+       param           type            ElementPointerTypeATI in value
+       param           pointer         Void in array [COMPSIZE(type)] retained
+       category        ATI_element_array
+       dlflags         notlistable
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.2
+       offset          ?
+
+DrawElementArrayATI(mode, count)
+       return          void
+       param           mode            BeginMode in value
+       param           count           SizeI in value
+       category        ATI_element_array
+       dlflags         handcode
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.2
+       offset          ?
+
+DrawRangeElementArrayATI(mode, start, end, count)
+       return          void
+       param           mode            BeginMode in value
+       param           start           UInt32 in value
+       param           end             UInt32 in value
+       param           count           SizeI in value
+       category        ATI_element_array
+       dlflags         handcode
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.2
+       offset          ?
+
+###############################################################################
+#
+# Extension #257
+# SUN_mesh_array commands
+#
+###############################################################################
+
+DrawMeshArraysSUN(mode, first, count, width)
+       return          void
+       param           mode            BeginMode in value
+       param           first           Int32 in value
+       param           count           SizeI in value
+       param           width           SizeI in value
+       category        SUN_mesh_array
+       dlflags         handcode
+       glxflags        client-handcode client-intercept server-handcode
+       version         1.1
+       glxropcode      ?
+       offset          ?
+
+###############################################################################
+#
+# Extension #258
+# SUN_slice_accum commands
+#
+###############################################################################
+
+# (none)
+newcategory: SUN_slice_accum
+
+###############################################################################
+#
+# Extension #259
+# NV_multisample_filter_hint commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_multisample_filter_hint
+
+###############################################################################
+#
+# Extension #260
+# NV_depth_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_depth_clamp
+
+###############################################################################
+#
+# Extension #261
+# NV_occlusion_query commands
+#
+###############################################################################
+
+GenOcclusionQueriesNV(n, ids)
+       return          void
+       param           n               SizeI in value
+       param           ids             UInt32 out array [n]
+       dlflags         notlistable
+       category        NV_occlusion_query
+       version         1.2
+       extension       soft WINSOFT NV20
+       glxflags        ignore
+
+DeleteOcclusionQueriesNV(n, ids)
+       return          void
+       param           n               SizeI in value
+       param           ids             UInt32 in array [n]
+       dlflags         notlistable
+       category        NV_occlusion_query
+       version         1.2
+       extension       soft WINSOFT NV20
+       glxflags        ignore
+
+IsOcclusionQueryNV(id)
+       return          Boolean
+       param           id              UInt32 in value
+       dlflags         notlistable
+       category        NV_occlusion_query
+       version         1.2
+       extension       soft WINSOFT NV20
+       glxflags        ignore
+
+BeginOcclusionQueryNV(id)
+       return          void
+       param           id              UInt32 in value
+       category        NV_occlusion_query
+       version         1.2
+       extension       soft WINSOFT NV20
+       glxflags        ignore
+
+EndOcclusionQueryNV()
+       return          void
+       category        NV_occlusion_query
+       version         1.2
+       extension       soft WINSOFT NV20
+       glxflags        ignore
+
+GetOcclusionQueryivNV(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           OcclusionQueryParameterNameNV in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        NV_occlusion_query
+       version         1.2
+       extension       soft WINSOFT NV20
+       glxflags        ignore
+
+GetOcclusionQueryuivNV(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           OcclusionQueryParameterNameNV in value
+       param           params          UInt32 out array [COMPSIZE(pname)]
+       dlflags         notlistable
+       category        NV_occlusion_query
+       version         1.2
+       extension       soft WINSOFT NV20
+       glxflags        ignore
+
+###############################################################################
+#
+# Extension #262
+# NV_point_sprite commands
+#
+###############################################################################
+
+PointParameteriNV(pname, param)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           param           Int32 in value
+       category        NV_point_sprite
+       version         1.2
+       extension       soft WINSOFT NV20
+       glxropcode      4221
+       alias           PointParameteri
+
+PointParameterivNV(pname, params)
+       return          void
+       param           pname           PointParameterNameARB in value
+       param           params          Int32 in array [COMPSIZE(pname)]
+       category        NV_point_sprite
+       version         1.2
+       extension       soft WINSOFT NV20
+       glxropcode      4222
+       alias           PointParameteriv
+
+###############################################################################
+#
+# Extension #263 - WGL_NV_render_depth_texture
+# Extension #264 - WGL_NV_render_texture_rectangle
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #265
+# NV_texture_shader3 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_shader3
+
+###############################################################################
+#
+# Extension #266
+# NV_vertex_program1_1 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_vertex_program1_1
+
+###############################################################################
+#
+# Extension #267
+# EXT_shadow_funcs commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_shadow_funcs
+
+###############################################################################
+#
+# Extension #268
+# EXT_stencil_two_side commands
+#
+###############################################################################
+
+ActiveStencilFaceEXT(face)
+       return          void
+       param           face            StencilFaceDirection in value
+       category        EXT_stencil_two_side
+       version         1.3
+       glxropcode      4220
+       offset          646
+
+###############################################################################
+#
+# Extension #269
+# ATI_text_fragment_shader commands
+#
+###############################################################################
+
+# Uses ARB_vertex_program entry points
+newcategory: ATI_text_fragment_shader
+
+###############################################################################
+#
+# Extension #270
+# APPLE_client_storage commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_client_storage
+
+###############################################################################
+#
+# Extension #271
+# APPLE_element_array commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+# @@@ like #256 ATI_element_array
+ElementPointerAPPLE(type, pointer)
+       return          void
+       param           type            ElementPointerTypeATI in value
+       param           pointer         Void in array [type]
+       category        APPLE_element_array
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DrawElementArrayAPPLE(mode, first, count)
+       return          void
+       param           mode            BeginMode in value
+       param           first           Int32 in value
+       param           count           SizeI in value
+       category        APPLE_element_array
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DrawRangeElementArrayAPPLE(mode, start, end, first, count)
+       return          void
+       param           mode            BeginMode in value
+       param           start           UInt32 in value
+       param           end             UInt32 in value
+       param           first           Int32 in value
+       param           count           SizeI in value
+       category        APPLE_element_array
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiDrawElementArrayAPPLE(mode, first, count, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           first           Int32 in array [primcount]
+       param           count           SizeI in array [primcount]
+       param           primcount       SizeI in value
+       category        APPLE_element_array
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiDrawRangeElementArrayAPPLE(mode, start, end, first, count, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           start           UInt32 in value
+       param           end             UInt32 in value
+       param           first           Int32 in array [primcount]
+       param           count           SizeI in array [primcount]
+       param           primcount       SizeI in value
+       category        APPLE_element_array
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #272
+# APPLE_fence commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+# @@@ like #222 NV_fence
+GenFencesAPPLE(n, fences)
+       return          void
+       param           n               SizeI in value
+       param           fences          FenceNV out array [n]
+       category        APPLE_fence
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DeleteFencesAPPLE(n, fences)
+       return          void
+       param           n               SizeI in value
+       param           fences          FenceNV in array [n]
+       category        APPLE_fence
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SetFenceAPPLE(fence)
+       return          void
+       param           fence           FenceNV in value
+       category        APPLE_fence
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsFenceAPPLE(fence)
+       return          Boolean
+       param           fence           FenceNV in value
+       category        APPLE_fence
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TestFenceAPPLE(fence)
+       return          Boolean
+       param           fence           FenceNV in value
+       category        APPLE_fence
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+FinishFenceAPPLE(fence)
+       return          void
+       param           fence           FenceNV in value
+       category        APPLE_fence
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TestObjectAPPLE(object, name)
+       return          Boolean
+       param           object          ObjectTypeAPPLE in value
+       param           name            UInt32 in value
+       category        APPLE_fence
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+FinishObjectAPPLE(object, name)
+       return          void
+       param           object          ObjectTypeAPPLE in value
+       param           name            Int32 in value
+       category        APPLE_fence
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #273
+# APPLE_vertex_array_object commands
+#
+###############################################################################
+
+BindVertexArrayAPPLE(array)
+       return          void
+       param           array           UInt32 in value
+       category        APPLE_vertex_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           BindVertexArray
+
+DeleteVertexArraysAPPLE(n, arrays)
+       return          void
+       param           n               SizeI in value
+       param           arrays          UInt32 in array [n]
+       category        APPLE_vertex_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           DeleteVertexArrays
+
+GenVertexArraysAPPLE(n, arrays)
+       return          void
+       param           n               SizeI in value
+       param           arrays          UInt32 out array [n]
+       category        APPLE_vertex_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           GenVertexArray
+
+IsVertexArrayAPPLE(array)
+       return          Boolean
+       param           array           UInt32 in value
+       category        APPLE_vertex_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           IsVertexArray
+
+###############################################################################
+#
+# Extension #274
+# APPLE_vertex_array_range commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+# @@@ like #190 NV_vertex_array_range,
+VertexArrayRangeAPPLE(length, pointer)
+       return          void
+       param           length          SizeI in value
+       param           pointer         Void out array [length]
+       category        APPLE_vertex_array_range
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+FlushVertexArrayRangeAPPLE(length, pointer)
+       return          void
+       param           length          SizeI in value
+       param           pointer         Void out array [length]
+       category        APPLE_vertex_array_range
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexArrayParameteriAPPLE(pname, param)
+       return          void
+       param           pname           VertexArrayPNameAPPLE in value
+       param           param           Int32 in value
+       category        APPLE_vertex_array_range
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #275
+# APPLE_ycbcr_422 commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_ycbcr_422
+
+###############################################################################
+#
+# Extension #276
+# S3_s3tc commands
+#
+###############################################################################
+
+# (none)
+newcategory: S3_s3tc
+
+###############################################################################
+#
+# Extension #277
+# ATI_draw_buffers commands
+#
+###############################################################################
+
+DrawBuffersATI(n, bufs)
+       return          void
+       param           n               SizeI in value
+       param           bufs            DrawBufferModeATI in array [n]
+       category        ATI_draw_buffers
+       version         1.2
+       extension
+       glxropcode      233
+       alias           DrawBuffers
+
+###############################################################################
+#
+# Extension #278 - WGL_ATI_pixel_format_float
+#
+###############################################################################
+newcategory: ATI_pixel_format_float
+passthru: /* This is really a WGL extension, but defines some associated GL enums.
+passthru:  * ATI does not export "GL_ATI_pixel_format_float" in the GL_EXTENSIONS string.
+passthru:  */
+
+###############################################################################
+#
+# Extension #279
+# ATI_texture_env_combine3 commands
+#
+###############################################################################
+
+# (none)
+newcategory: ATI_texture_env_combine3
+
+###############################################################################
+#
+# Extension #280
+# ATI_texture_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: ATI_texture_float
+
+###############################################################################
+#
+# Extension #281 (also WGL_NV_float_buffer)
+# NV_float_buffer commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_float_buffer
+
+###############################################################################
+#
+# Extension #282
+# NV_fragment_program commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+# Some NV_fragment_program entry points are shared with ARB_vertex_program,
+#   and are only included in that #define block, for now.
+newcategory: NV_fragment_program
+passthru: /* Some NV_fragment_program entry points are shared with ARB_vertex_program. */
+
+ProgramNamedParameter4fNV(id, len, name, x, y, z, w)
+       return          void
+       param           id              UInt32 in value
+       param           len             SizeI in value
+       param           name            UInt8 in array [1]
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        NV_fragment_program
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          682
+
+ProgramNamedParameter4dNV(id, len, name, x, y, z, w)
+       return          void
+       param           id              UInt32 in value
+       param           len             SizeI in value
+       param           name            UInt8 in array [1]
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        NV_fragment_program
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          683
+
+ProgramNamedParameter4fvNV(id, len, name, v)
+       return          void
+       param           id              UInt32 in value
+       param           len             SizeI in value
+       param           name            UInt8 in array [1]
+       param           v               Float32 in array [4]
+       category        NV_fragment_program
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          684
+
+ProgramNamedParameter4dvNV(id, len, name, v)
+       return          void
+       param           id              UInt32 in value
+       param           len             SizeI in value
+       param           name            UInt8 in array [1]
+       param           v               Float64 in array [4]
+       category        NV_fragment_program
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          685
+
+GetProgramNamedParameterfvNV(id, len, name, params)
+       return          void
+       param           id              UInt32 in value
+       param           len             SizeI in value
+       param           name            UInt8 in array [1]
+       param           params          Float32 out array [4]
+       category        NV_fragment_program
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          686
+
+GetProgramNamedParameterdvNV(id, len, name, params)
+       return          void
+       param           id              UInt32 in value
+       param           len             SizeI in value
+       param           name            UInt8 in array [1]
+       param           params          Float64 out array [4]
+       category        NV_fragment_program
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          687
+
+###############################################################################
+#
+# Extension #283
+# NV_half_float commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+Vertex2hNV(x, y)
+       return          void
+       param           x               Half16NV in value
+       param           y               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Vertex2hvNV(v)
+       return          void
+       param           v               Half16NV in array [2]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Vertex3hNV(x, y, z)
+       return          void
+       param           x               Half16NV in value
+       param           y               Half16NV in value
+       param           z               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Vertex3hvNV(v)
+       return          void
+       param           v               Half16NV in array [3]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Vertex4hNV(x, y, z, w)
+       return          void
+       param           x               Half16NV in value
+       param           y               Half16NV in value
+       param           z               Half16NV in value
+       param           w               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Vertex4hvNV(v)
+       return          void
+       param           v               Half16NV in array [4]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Normal3hNV(nx, ny, nz)
+       return          void
+       param           nx              Half16NV in value
+       param           ny              Half16NV in value
+       param           nz              Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Normal3hvNV(v)
+       return          void
+       param           v               Half16NV in array [3]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Color3hNV(red, green, blue)
+       return          void
+       param           red             Half16NV in value
+       param           green           Half16NV in value
+       param           blue            Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Color3hvNV(v)
+       return          void
+       param           v               Half16NV in array [3]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Color4hNV(red, green, blue, alpha)
+       return          void
+       param           red             Half16NV in value
+       param           green           Half16NV in value
+       param           blue            Half16NV in value
+       param           alpha           Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Color4hvNV(v)
+       return          void
+       param           v               Half16NV in array [4]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoord1hNV(s)
+       return          void
+       param           s               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoord1hvNV(v)
+       return          void
+       param           v               Half16NV in array [1]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoord2hNV(s, t)
+       return          void
+       param           s               Half16NV in value
+       param           t               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoord2hvNV(v)
+       return          void
+       param           v               Half16NV in array [2]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoord3hNV(s, t, r)
+       return          void
+       param           s               Half16NV in value
+       param           t               Half16NV in value
+       param           r               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoord3hvNV(v)
+       return          void
+       param           v               Half16NV in array [3]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoord4hNV(s, t, r, q)
+       return          void
+       param           s               Half16NV in value
+       param           t               Half16NV in value
+       param           r               Half16NV in value
+       param           q               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoord4hvNV(v)
+       return          void
+       param           v               Half16NV in array [4]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoord1hNV(target, s)
+       return          void
+       param           target          TextureUnit in value
+       param           s               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoord1hvNV(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               Half16NV in array [1]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoord2hNV(target, s, t)
+       return          void
+       param           target          TextureUnit in value
+       param           s               Half16NV in value
+       param           t               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoord2hvNV(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               Half16NV in array [2]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoord3hNV(target, s, t, r)
+       return          void
+       param           target          TextureUnit in value
+       param           s               Half16NV in value
+       param           t               Half16NV in value
+       param           r               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoord3hvNV(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               Half16NV in array [3]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoord4hNV(target, s, t, r, q)
+       return          void
+       param           target          TextureUnit in value
+       param           s               Half16NV in value
+       param           t               Half16NV in value
+       param           r               Half16NV in value
+       param           q               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MultiTexCoord4hvNV(target, v)
+       return          void
+       param           target          TextureUnit in value
+       param           v               Half16NV in array [4]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+FogCoordhNV(fog)
+       return          void
+       param           fog             Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+FogCoordhvNV(fog)
+       return          void
+       param           fog             Half16NV in array [1]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SecondaryColor3hNV(red, green, blue)
+       return          void
+       param           red             Half16NV in value
+       param           green           Half16NV in value
+       param           blue            Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SecondaryColor3hvNV(v)
+       return          void
+       param           v               Half16NV in array [3]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexWeighthNV(weight)
+       return          void
+       param           weight          Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexWeighthvNV(weight)
+       return          void
+       param           weight          Half16NV in array [1]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttrib1hNV(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttrib1hvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Half16NV in array [1]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttrib2hNV(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Half16NV in value
+       param           y               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttrib2hvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Half16NV in array [2]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttrib3hNV(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Half16NV in value
+       param           y               Half16NV in value
+       param           z               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttrib3hvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Half16NV in array [3]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttrib4hNV(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Half16NV in value
+       param           y               Half16NV in value
+       param           z               Half16NV in value
+       param           w               Half16NV in value
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttrib4hvNV(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Half16NV in array [4]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribs1hvNV(index, n, v)
+       return          void
+       param           index           UInt32 in value
+       param           n               SizeI in value
+       param           v               Half16NV in array [n]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribs2hvNV(index, n, v)
+       return          void
+       param           index           UInt32 in value
+       param           n               SizeI in value
+       param           v               Half16NV in array [n]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribs3hvNV(index, n, v)
+       return          void
+       param           index           UInt32 in value
+       param           n               SizeI in value
+       param           v               Half16NV in array [n]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribs4hvNV(index, n, v)
+       return          void
+       param           index           UInt32 in value
+       param           n               SizeI in value
+       param           v               Half16NV in array [n]
+       category        NV_half_float
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #284
+# NV_pixel_data_range commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+PixelDataRangeNV(target, length, pointer)
+       return          void
+       param           target          PixelDataRangeTargetNV in value
+       param           length          SizeI in value
+       param           pointer         Void out array [length]
+       category        NV_pixel_data_range
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+FlushPixelDataRangeNV(target)
+       return          void
+       param           target          PixelDataRangeTargetNV in value
+       category        NV_pixel_data_range
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #285
+# NV_primitive_restart commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+PrimitiveRestartNV()
+       return          void
+       category        NV_primitive_restart
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+PrimitiveRestartIndexNV(index)
+       return          void
+       param           index           UInt32 in value
+       category        NV_primitive_restart
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+
+###############################################################################
+#
+# Extension #286
+# NV_texture_expand_normal commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_expand_normal
+
+###############################################################################
+#
+# Extension #287
+# NV_vertex_program2 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_vertex_program2
+
+###############################################################################
+#
+# Extension #288
+# ATI_map_object_buffer commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+MapObjectBufferATI(buffer)
+       return          VoidPointer
+       param           buffer          UInt32 in value
+       category        ATI_map_object_buffer
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+UnmapObjectBufferATI(buffer)
+       return          void
+       param           buffer          UInt32 in value
+       category        ATI_map_object_buffer
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #289
+# ATI_separate_stencil commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+StencilOpSeparateATI(face, sfail, dpfail, dppass)
+       return          void
+       param           face            StencilFaceDirection in value
+       param           sfail           StencilOp in value
+       param           dpfail          StencilOp in value
+       param           dppass          StencilOp in value
+       category        ATI_separate_stencil
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           StencilOpSeparate
+
+StencilFuncSeparateATI(frontfunc, backfunc, ref, mask)
+       return          void
+       param           frontfunc       StencilFunction in value
+       param           backfunc        StencilFunction in value
+       param           ref             ClampedStencilValue in value
+       param           mask            MaskedStencilValue in value
+       category        ATI_separate_stencil
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           StencilFuncSeparate
+
+###############################################################################
+#
+# Extension #290
+# ATI_vertex_attrib_array_object commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+VertexAttribArrayObjectATI(index, size, type, normalized, stride, buffer, offset)
+       return          void
+       param           index           UInt32 in value
+       param           size            Int32 in value
+       param           type            VertexAttribPointerTypeARB in value
+       param           normalized      Boolean in value
+       param           stride          SizeI in value
+       param           buffer          UInt32 in value
+       param           offset          UInt32 in value
+       category        ATI_vertex_attrib_array_object
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetVertexAttribArrayObjectfvATI(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           ArrayObjectPNameATI in value
+       param           params          Float32 out array [pname]
+       category        ATI_vertex_attrib_array_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVertexAttribArrayObjectivATI(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           ArrayObjectPNameATI in value
+       param           params          Int32 out array [pname]
+       category        ATI_vertex_attrib_array_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #291 - OpenGL ES only, not in glext.h
+# OES_byte_coordinates commands
+#
+###############################################################################
+
+# void Vertex{234}bOES(T coords)
+# void Vertex{234}bvOES(T *coords)
+# void TexCoord{1234}bOES(T coords)
+# void TexCoord{1234}bvOES(T *coords)
+# void MultiTexCoord{1234}bOES(enum texture, T coords)
+# void MultiTexCoord{1234}bvOES(enum texture, T *coords)
+# All are handcode - mapped to non-byte GLX protocol on client side
+
+# newcategory: OES_byte_coordinates
+
+###############################################################################
+#
+# Extension #292 - OpenGL ES only, not in glext.h
+# OES_fixed_point commands
+#
+###############################################################################
+
+# Too many to list in just a comment - see spec in the extension registry
+# All are handcode - mapped to non-byte GLX protocol on client side
+
+# newcategory: OES_fixed_point
+
+###############################################################################
+#
+# Extension #293 - OpenGL ES only, not in glext.h
+# OES_single_precision commands
+#
+###############################################################################
+
+# void DepthRangefOES(clampf n, clampf f)
+# void FrustumfOES(float l, float r, float b, float t, float n, float f)
+# void OrthofOES(float l, float r, float b, float t, float n, float f)
+# void ClipPlanefOES(enum plane, const float* equation)
+# void glClearDepthfOES(clampd depth)
+# GLX ropcodes 4308-4312 (not respectively, see extension spec)
+# void GetClipPlanefOES(enum plane, float* equation)
+# GLX vendor private 1421
+
+# newcategory: OES_single_precision
+
+###############################################################################
+#
+# Extension #294 - OpenGL ES only, not in glext.h
+# OES_compressed_paletted_texture commands
+#
+###############################################################################
+
+# (none)
+# newcategory: OES_compressed_paletted_texture
+
+###############################################################################
+#
+# Extension #295 - This is an OpenGL ES extension, but also implemented in Mesa
+# OES_read_format commands
+#
+###############################################################################
+
+# (none)
+newcategory: OES_read_format
+
+###############################################################################
+#
+# Extension #296 - OpenGL ES only, not in glext.h
+# OES_query_matrix commands
+#
+###############################################################################
+
+# bitfield queryMatrixxOES(fixed mantissa[16], int exponent[16])
+# All are handcode - mapped to non-byte GLX protocol on client side
+
+# newcategory: OES_query_matrix
+
+###############################################################################
+#
+# Extension #297
+# EXT_depth_bounds_test commands
+#
+###############################################################################
+
+DepthBoundsEXT(zmin, zmax)
+       return          void
+       param           zmin            ClampedFloat64 in value
+       param           zmax            ClampedFloat64 in value
+       category        EXT_depth_bounds_test
+       version         1.2
+       extension
+       glxropcode      4229
+       offset          699
+
+###############################################################################
+#
+# Extension #298
+# EXT_texture_mirror_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_mirror_clamp
+
+###############################################################################
+#
+# Extension #299
+# EXT_blend_equation_separate commands
+#
+###############################################################################
+
+BlendEquationSeparateEXT(modeRGB, modeAlpha)
+       return          void
+       param           modeRGB         BlendEquationModeEXT in value
+       param           modeAlpha       BlendEquationModeEXT in value
+       category        EXT_blend_equation_separate
+       version         1.2
+       extension
+       glxropcode      4228
+       alias           BlendEquationSeparate
+
+###############################################################################
+#
+# Extension #300
+# MESA_pack_invert commands
+#
+###############################################################################
+
+# (none)
+newcategory: MESA_pack_invert
+
+###############################################################################
+#
+# Extension #301
+# MESA_ycbcr_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: MESA_ycbcr_texture
+
+###############################################################################
+#
+# Extension #301
+# MESA_ycbcr_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: MESA_ycbcr_texture
+
+###############################################################################
+#
+# Extension #302
+# EXT_pixel_buffer_object commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_pixel_buffer_object
+
+###############################################################################
+#
+# Extension #303
+# NV_fragment_program_option commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_fragment_program_option
+
+###############################################################################
+#
+# Extension #304
+# NV_fragment_program2 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_fragment_program2
+
+###############################################################################
+#
+# Extension #305
+# NV_vertex_program2_option commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_vertex_program2_option
+
+###############################################################################
+#
+# Extension #306
+# NV_vertex_program3 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_vertex_program3
+
+###############################################################################
+#
+# Extension #307 - GLX_SGIX_hyperpipe commands
+# Extension #308 - GLX_MESA_agp_offset commands
+# Extension #309 - GL_EXT_texture_compression_dxt1 (OpenGL ES only, subset of _st3c version)
+#
+###############################################################################
+
+# (none)
+# newcategory: EXT_texture_compression_dxt1
+
+###############################################################################
+#
+# Extension #310
+# EXT_framebuffer_object commands
+#
+###############################################################################
+
+IsRenderbufferEXT(renderbuffer)
+       return          Boolean
+       param           renderbuffer    UInt32 in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxvendorpriv   1422
+       glxflags        ignore
+       alias           IsRenderbuffer
+
+BindRenderbufferEXT(target, renderbuffer)
+       return          void
+       param           target          RenderbufferTarget in value
+       param           renderbuffer    UInt32 in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxropcode      4316
+       glxflags        ignore
+       alias           BindRenderbuffer
+
+DeleteRenderbuffersEXT(n, renderbuffers)
+       return          void
+       param           n               SizeI in value
+       param           renderbuffers   UInt32 in array [n]
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxropcode      4317
+       glxflags        ignore
+       alias           DeleteRenderbuffers
+
+GenRenderbuffersEXT(n, renderbuffers)
+       return          void
+       param           n               SizeI in value
+       param           renderbuffers   UInt32 out array [n]
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxvendorpriv   1423
+       glxflags        ignore
+       alias           GenRenderbuffers
+
+RenderbufferStorageEXT(target, internalformat, width, height)
+       return          void
+       param           target          RenderbufferTarget in value
+       param           internalformat  GLenum in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxropcode      4318
+       glxflags        ignore
+       alias           RenderbufferStorage
+
+GetRenderbufferParameterivEXT(target, pname, params)
+       return          void
+       param           target          RenderbufferTarget in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_framebuffer_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxvendorpriv   1424
+       glxflags        ignore
+       alias           GetRenderbufferParameteriv
+
+IsFramebufferEXT(framebuffer)
+       return          Boolean
+       param           framebuffer     UInt32 in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxvendorpriv   1425
+       glxflags        ignore
+       alias           IsFramebuffer
+
+BindFramebufferEXT(target, framebuffer)
+       return          void
+       param           target          FramebufferTarget in value
+       param           framebuffer     UInt32 in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxropcode      4319
+       glxflags        ignore
+       alias           BindFramebuffer
+
+DeleteFramebuffersEXT(n, framebuffers)
+       return          void
+       param           n               SizeI in value
+       param           framebuffers    UInt32 in array [n]
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxropcode      4320
+       glxflags        ignore
+       alias           DeleteFramebuffers
+
+GenFramebuffersEXT(n, framebuffers)
+       return          void
+       param           n               SizeI in value
+       param           framebuffers    UInt32 out array [n]
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxvendorpriv   1426
+       glxflags        ignore
+       alias           GenFramebuffers
+
+CheckFramebufferStatusEXT(target)
+       return          GLenum
+       param           target          FramebufferTarget in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxvendorpriv   1427
+       glxflags        ignore
+       alias           CheckFramebufferStatus
+
+FramebufferTexture1DEXT(target, attachment, textarget, texture, level)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           textarget       GLenum in value
+       param           texture         UInt32 in value
+       param           level           Int32 in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxropcode      4321
+       glxflags        ignore
+       alias           FramebufferTexture1D
+
+FramebufferTexture2DEXT(target, attachment, textarget, texture, level)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           textarget       GLenum in value
+       param           texture         UInt32 in value
+       param           level           Int32 in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxropcode      4322
+       glxflags        ignore
+       alias           FramebufferTexture2D
+
+FramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           textarget       GLenum in value
+       param           texture         UInt32 in value
+       param           level           Int32 in value
+       param           zoffset         Int32 in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxropcode      4323
+       glxflags        ignore
+       alias           FramebufferTexture3D
+
+FramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           renderbuffertarget      RenderbufferTarget in value
+       param           renderbuffer    UInt32 in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxropcode      4324
+       glxflags        ignore
+       alias           FramebufferRenderbuffer
+
+GetFramebufferAttachmentParameterivEXT(target, attachment, pname, params)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_framebuffer_object
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxvendorpriv   1428
+       glxflags        ignore
+       alias           GetFramebufferAttachmentParameteriv
+
+GenerateMipmapEXT(target)
+       return          void
+       param           target          GLenum in value
+       category        EXT_framebuffer_object
+       version         1.2
+       extension
+       glxropcode      4325
+       glxflags        ignore
+       alias           GenerateMipmap
+
+
+###############################################################################
+#
+# Extension #311
+# GREMEDY_string_marker commands
+#
+###############################################################################
+
+StringMarkerGREMEDY(len, string)
+       return          void
+       param           len             SizeI in value
+       param           string          Void in array [len]
+       category        GREMEDY_string_marker
+       version         1.0
+       extension
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #312
+# EXT_packed_depth_stencil commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_packed_depth_stencil
+
+###############################################################################
+#
+# Extension #313 - WGL_3DL_stereo_control
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #314
+# EXT_stencil_clear_tag commands
+#
+###############################################################################
+
+StencilClearTagEXT(stencilTagBits, stencilClearTag)
+       return          void
+       param           stencilTagBits  SizeI in value
+       param           stencilClearTag UInt32 in value
+       category        EXT_stencil_clear_tag
+       version         1.5
+       extension
+       glxropcode      4223
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #315
+# EXT_texture_sRGB commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_sRGB
+
+###############################################################################
+#
+# Extension #316
+# EXT_framebuffer_blit commands
+#
+###############################################################################
+
+BlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
+       return          void
+       param           srcX0           Int32 in value
+       param           srcY0           Int32 in value
+       param           srcX1           Int32 in value
+       param           srcY1           Int32 in value
+       param           dstX0           Int32 in value
+       param           dstY0           Int32 in value
+       param           dstX1           Int32 in value
+       param           dstY1           Int32 in value
+       param           mask            ClearBufferMask in value
+       param           filter          GLenum in value
+       category        EXT_framebuffer_blit
+       version         1.5
+       glxropcode      4330
+       alias           BlitFramebuffer
+
+###############################################################################
+#
+# Extension #317
+# EXT_framebuffer_multisample commands
+#
+###############################################################################
+
+RenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height)
+       return          void
+       param           target          GLenum in value
+       param           samples         SizeI in value
+       param           internalformat  GLenum in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_framebuffer_multisample
+       version         1.5
+       glxropcode      4331
+       alias           RenderbufferStorageMultisample
+
+###############################################################################
+#
+# Extension #318
+# MESAX_texture_stack commands
+#
+###############################################################################
+
+# (none)
+newcategory: MESAX_texture_stack
+
+###############################################################################
+#
+# Extension #319
+# EXT_timer_query commands
+#
+###############################################################################
+
+GetQueryObjecti64vEXT(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int64EXT out array [pname]
+       category        EXT_timer_query
+       dlflags         notlistable
+       version         1.5
+       glxvendorpriv   1328
+       glxflags        ignore
+       offset          ?
+
+GetQueryObjectui64vEXT(id, pname, params)
+       return          void
+       param           id              UInt32 in value
+       param           pname           GLenum in value
+       param           params          UInt64EXT out array [pname]
+       category        EXT_timer_query
+       dlflags         notlistable
+       version         1.5
+       glxvendorpriv   1329
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #320
+# EXT_gpu_program_parameters commands
+#
+###############################################################################
+
+ProgramEnvParameters4fvEXT(target, index, count, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          Float32 in array [count*4]
+       category        EXT_gpu_program_parameters
+       version         1.2
+       glxropcode      4281
+       offset          ?
+
+ProgramLocalParameters4fvEXT(target, index, count, params)
+       return          void
+       param           target          ProgramTargetARB in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          Float32 in array [count*4]
+       category        EXT_gpu_program_parameters
+       version         1.2
+       glxropcode      4282
+       offset          ?
+
+###############################################################################
+#
+# Extension #321
+# APPLE_flush_buffer_range commands
+#
+###############################################################################
+
+BufferParameteriAPPLE(target, pname, param)
+       return          void
+       param           target          GLenum in value
+       param           pname           GLenum in value
+       param           param           Int32 in value
+       category        APPLE_flush_buffer_range
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+FlushMappedBufferRangeAPPLE(target, offset, size)
+       return          void
+       param           target          GLenum in value
+       param           offset          BufferOffset in value
+       param           size            BufferSize in value
+       category        APPLE_flush_buffer_range
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       alias           FlushMappedBufferRange
+
+###############################################################################
+#
+# Extension #322
+# NV_gpu_program4 commands
+#
+###############################################################################
+
+ProgramLocalParameterI4iNV(target, index, x, y, z, w)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       param           z               Int32 in value
+       param           w               Int32 in value
+       category        NV_gpu_program4
+       version         1.3
+       vectorequiv     ProgramLocalParameterI4ivNV
+       glxvectorequiv  ProgramLocalParameterI4ivNV
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramLocalParameterI4ivNV(target, index, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          Int32 in array [4]
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramLocalParametersI4ivNV(target, index, count, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          Int32 in array [count*4]
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramLocalParameterI4uiNV(target, index, x, y, z, w)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       param           y               UInt32 in value
+       param           z               UInt32 in value
+       param           w               UInt32 in value
+       category        NV_gpu_program4
+       version         1.3
+       vectorequiv     ProgramLocalParameterI4uivNV
+       glxvectorequiv  ProgramLocalParameterI4uivNV
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramLocalParameterI4uivNV(target, index, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          UInt32 in array [4]
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramLocalParametersI4uivNV(target, index, count, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          UInt32 in array [count*4]
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramEnvParameterI4iNV(target, index, x, y, z, w)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       param           z               Int32 in value
+       param           w               Int32 in value
+       category        NV_gpu_program4
+       version         1.3
+       vectorequiv     ProgramEnvParameterI4ivNV
+       glxvectorequiv  ProgramEnvParameterI4ivNV
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramEnvParameterI4ivNV(target, index, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          Int32 in array [4]
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramEnvParametersI4ivNV(target, index, count, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          Int32 in array [count*4]
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramEnvParameterI4uiNV(target, index, x, y, z, w)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       param           y               UInt32 in value
+       param           z               UInt32 in value
+       param           w               UInt32 in value
+       category        NV_gpu_program4
+       version         1.3
+       vectorequiv     ProgramEnvParameterI4uivNV
+       glxvectorequiv  ProgramEnvParameterI4uivNV
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramEnvParameterI4uivNV(target, index, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          UInt32 in array [4]
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramEnvParametersI4uivNV(target, index, count, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          UInt32 in array [count*4]
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+GetProgramLocalParameterIivNV(target, index, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          Int32 out array [4]
+       dlflags         notlistable
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+GetProgramLocalParameterIuivNV(target, index, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          UInt32 out array [4]
+       dlflags         notlistable
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+GetProgramEnvParameterIivNV(target, index, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          Int32 out array [4]
+       dlflags         notlistable
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+GetProgramEnvParameterIuivNV(target, index, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          UInt32 out array [4]
+       dlflags         notlistable
+       category        NV_gpu_program4
+       version         1.3
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+###############################################################################
+#
+# Extension #323
+# NV_geometry_program4 commands
+#
+###############################################################################
+
+ProgramVertexLimitNV(target, limit)
+       return          void
+       param           target          ProgramTarget in value
+       param           limit           Int32 in value
+       category        NV_geometry_program4
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+
+FramebufferTextureEXT(target, attachment, texture, level)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       category        NV_geometry_program4
+       version         2.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       alias           FramebufferTextureARB
+
+FramebufferTextureLayerEXT(target, attachment, texture, level, layer)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       param           layer           CheckedInt32 in value
+       category        NV_geometry_program4
+       version         2.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       alias           FramebufferTextureLayer
+
+FramebufferTextureFaceEXT(target, attachment, texture, level, face)
+       return          void
+       param           target          FramebufferTarget in value
+       param           attachment      FramebufferAttachment in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       param           face            TextureTarget in value
+       category        NV_geometry_program4
+       version         2.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       alias           FramebufferTextureFaceARB
+
+###############################################################################
+#
+# Extension #324
+# EXT_geometry_shader4 commands
+#
+###############################################################################
+
+ProgramParameteriEXT(program, pname, value)
+       return          void
+       param           program         UInt32 in value
+       param           pname           ProgramParameterPName in value
+       param           value           Int32 in value
+       category        EXT_geometry_shader4
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           ProgramParameteriARB
+
+###############################################################################
+#
+# Extension #325
+# NV_vertex_program4 commands
+#
+###############################################################################
+
+VertexAttribI1iEXT(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       category        NV_vertex_program4
+       beginend        allow-inside
+       vectorequiv     VertexAttribI1ivEXT
+       glxvectorequiv  VertexAttribI1ivEXT
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI1i
+
+VertexAttribI2iEXT(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       category        NV_vertex_program4
+       beginend        allow-inside
+       vectorequiv     VertexAttribI2ivEXT
+       glxvectorequiv  VertexAttribI2ivEXT
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI2i
+
+VertexAttribI3iEXT(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       param           z               Int32 in value
+       category        NV_vertex_program4
+       beginend        allow-inside
+       vectorequiv     VertexAttribI3ivEXT
+       glxvectorequiv  VertexAttribI3ivEXT
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI3i
+
+VertexAttribI4iEXT(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       param           z               Int32 in value
+       param           w               Int32 in value
+       category        NV_vertex_program4
+       beginend        allow-inside
+       vectorequiv     VertexAttribI4ivEXT
+       glxvectorequiv  VertexAttribI4ivEXT
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI4i
+
+VertexAttribI1uiEXT(index, x)
+       return          void
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       category        NV_vertex_program4
+       beginend        allow-inside
+       vectorequiv     VertexAttribI1uivEXT
+       glxvectorequiv  VertexAttribI1uivEXT
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI1ui
+
+VertexAttribI2uiEXT(index, x, y)
+       return          void
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       param           y               UInt32 in value
+       category        NV_vertex_program4
+       beginend        allow-inside
+       vectorequiv     VertexAttribI2uivEXT
+       glxvectorequiv  VertexAttribI2uivEXT
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI2ui
+
+VertexAttribI3uiEXT(index, x, y, z)
+       return          void
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       param           y               UInt32 in value
+       param           z               UInt32 in value
+       category        NV_vertex_program4
+       beginend        allow-inside
+       vectorequiv     VertexAttribI3uivEXT
+       glxvectorequiv  VertexAttribI3uivEXT
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI3ui
+
+VertexAttribI4uiEXT(index, x, y, z, w)
+       return          void
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       param           y               UInt32 in value
+       param           z               UInt32 in value
+       param           w               UInt32 in value
+       category        NV_vertex_program4
+       beginend        allow-inside
+       vectorequiv     VertexAttribI4uivEXT
+       glxvectorequiv  VertexAttribI4uivEXT
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI4ui
+
+VertexAttribI1ivEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [1]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI1iv
+
+VertexAttribI2ivEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [2]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI2iv
+
+VertexAttribI3ivEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [3]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI3iv
+
+VertexAttribI4ivEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int32 in array [4]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI4iv
+
+VertexAttribI1uivEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [1]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI1uiv
+
+VertexAttribI2uivEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [2]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI2uiv
+
+VertexAttribI3uivEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [3]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI3uiv
+
+VertexAttribI4uivEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt32 in array [4]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI4uiv
+
+VertexAttribI4bvEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int8 in array [4]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI4bv
+
+VertexAttribI4svEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               Int16 in array [4]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI4sv
+
+VertexAttribI4ubvEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt8 in array [4]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI4ubv
+
+VertexAttribI4usvEXT(index, v)
+       return          void
+       param           index           UInt32 in value
+       param           v               UInt16 in array [4]
+       category        NV_vertex_program4
+       beginend        allow-inside
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribI4usv
+
+VertexAttribIPointerEXT(index, size, type, stride, pointer)
+       return          void
+       param           index           UInt32 in value
+       param           size            Int32 in value
+       param           type            VertexAttribEnum in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride)] retained
+       category        NV_vertex_program4
+       dlflags         notlistable
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           VertexAttribIPointer
+
+GetVertexAttribIivEXT(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribEnum in value
+       param           params          Int32 out array [1]
+       category        NV_vertex_program4
+       dlflags         notlistable
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           GetVertexAttribIiv
+
+GetVertexAttribIuivEXT(index, pname, params)
+       return          void
+       param           index           UInt32 in value
+       param           pname           VertexAttribEnum in value
+       param           params          UInt32 out array [1]
+       category        NV_vertex_program4
+       dlflags         notlistable
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       alias           GetVertexAttribIuiv
+
+###############################################################################
+#
+# Extension #326
+# EXT_gpu_shader4 commands
+#
+###############################################################################
+
+GetUniformuivEXT(program, location, params)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           params          UInt32 out array [COMPSIZE(program/location)]
+       category        EXT_gpu_shader4
+       dlflags         notlistable
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           GetUniformuiv
+
+BindFragDataLocationEXT(program, color, name)
+       return          void
+       param           program         UInt32 in value
+       param           color           UInt32 in value
+       param           name            Char in array [COMPSIZE(name)]
+       category        EXT_gpu_shader4
+       dlflags         notlistable
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           BindFragDataLocation
+
+GetFragDataLocationEXT(program, name)
+       return          Int32
+       param           program         UInt32 in value
+       param           name            Char in array [COMPSIZE(name)]
+       category        EXT_gpu_shader4
+       dlflags         notlistable
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           GetFragDataLocation
+
+Uniform1uiEXT(location, v0)
+       return          void
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       category        EXT_gpu_shader4
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           Uniform1ui
+
+Uniform2uiEXT(location, v0, v1)
+       return          void
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       param           v1              UInt32 in value
+       category        EXT_gpu_shader4
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           Uniform2ui
+
+Uniform3uiEXT(location, v0, v1, v2)
+       return          void
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       param           v1              UInt32 in value
+       param           v2              UInt32 in value
+       category        EXT_gpu_shader4
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           Uniform3ui
+
+Uniform4uiEXT(location, v0, v1, v2, v3)
+       return          void
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       param           v1              UInt32 in value
+       param           v2              UInt32 in value
+       param           v3              UInt32 in value
+       category        EXT_gpu_shader4
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           Uniform4ui
+
+Uniform1uivEXT(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count]
+       category        EXT_gpu_shader4
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           Uniform1uiv
+
+Uniform2uivEXT(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count*2]
+       category        EXT_gpu_shader4
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           Uniform2uiv
+
+Uniform3uivEXT(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count*3]
+       category        EXT_gpu_shader4
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           Uniform3uiv
+
+Uniform4uivEXT(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count*4]
+       category        EXT_gpu_shader4
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           Uniform4uiv
+
+###############################################################################
+#
+# Extension #327
+# EXT_draw_instanced commands
+#
+###############################################################################
+
+DrawArraysInstancedEXT(mode, start, count, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           start           Int32 in value
+       param           count           SizeI in value
+       param           primcount       SizeI in value
+       category        EXT_draw_instanced
+       version         2.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       vectorequiv     ArrayElement
+       glfflags        ignore
+       glxflags        ignore
+       alias           DrawArraysInstancedARB
+
+DrawElementsInstancedEXT(mode, count, type, indices, primcount)
+       return          void
+       param           mode            BeginMode in value
+       param           count           SizeI in value
+       param           type            DrawElementsType in value
+       param           indices         Void in array [COMPSIZE(count/type)]
+       param           primcount       SizeI in value
+       category        EXT_draw_instanced
+       version         2.0
+       extension       soft WINSOFT
+       dlflags         notlistable
+       vectorequiv     ArrayElement
+       glfflags        ignore
+       glxflags        ignore
+       alias           DrawElementsInstancedARB
+
+###############################################################################
+#
+# Extension #328
+# EXT_packed_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_packed_float
+
+###############################################################################
+#
+# Extension #329
+# EXT_texture_array commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_array
+
+###############################################################################
+#
+# Extension #330
+# EXT_texture_buffer_object commands
+#
+###############################################################################
+
+TexBufferEXT(target, internalformat, buffer)
+       return          void
+       param           target          TextureTarget in value
+       param           internalformat  GLenum in value
+       param           buffer          UInt32 in value
+       category        EXT_texture_buffer_object
+       version         2.0
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       alias           TexBufferARB
+
+###############################################################################
+#
+# Extension #331
+# EXT_texture_compression_latc commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_compression_latc
+
+###############################################################################
+#
+# Extension #332
+# EXT_texture_compression_rgtc commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_compression_rgtc
+
+###############################################################################
+#
+# Extension #333
+# EXT_texture_shared_exponent commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_shared_exponent
+
+###############################################################################
+#
+# Extension #334
+# NV_depth_buffer_float commands
+#
+###############################################################################
+
+DepthRangedNV(zNear, zFar)
+       return          void
+       param           zNear           Float64 in value
+       param           zFar            Float64 in value
+       category        NV_depth_buffer_float
+       extension       soft WINSOFT NV50
+       version         2.0
+       glfflags        ignore
+       glxflags        ignore
+
+ClearDepthdNV(depth)
+       return          void
+       param           depth           Float64 in value
+       category        NV_depth_buffer_float
+       extension       soft WINSOFT NV50
+       version         2.0
+       glfflags        ignore
+       glxflags        ignore
+
+DepthBoundsdNV(zmin, zmax)
+       return          void
+       param           zmin            Float64 in value
+       param           zmax            Float64 in value
+       category        NV_depth_buffer_float
+       extension       soft WINSOFT NV50
+       version         2.0
+       glfflags        ignore
+       glxflags        ignore
+
+###############################################################################
+#
+# Extension #335
+# NV_fragment_program4 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_fragment_program4
+
+###############################################################################
+#
+# Extension #336
+# NV_framebuffer_multisample_coverage commands
+#
+###############################################################################
+
+RenderbufferStorageMultisampleCoverageNV(target, coverageSamples, colorSamples, internalformat, width, height)
+       return          void
+       param           target          RenderbufferTarget in value
+       param           coverageSamples SizeI in value
+       param           colorSamples    SizeI in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        NV_framebuffer_multisample_coverage
+       version         1.5
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+
+###############################################################################
+#
+# Extension #337
+# EXT_framebuffer_sRGB commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_framebuffer_sRGB
+
+###############################################################################
+#
+# Extension #338
+# NV_geometry_shader4 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_geometry_shader4
+
+###############################################################################
+#
+# Extension #339
+# NV_parameter_buffer_object commands
+#
+###############################################################################
+
+ProgramBufferParametersfvNV(target, buffer, index, count, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           buffer          UInt32 in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          Float32 in array [count]
+       category        NV_parameter_buffer_object
+       version         1.2
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramBufferParametersIivNV(target, buffer, index, count, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           buffer          UInt32 in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          Int32 in array [count]
+       category        NV_parameter_buffer_object
+       version         1.2
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ProgramBufferParametersIuivNV(target, buffer, index, count, params)
+       return          void
+       param           target          ProgramTarget in value
+       param           buffer          UInt32 in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          UInt32 in array [count]
+       category        NV_parameter_buffer_object
+       version         1.2
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+###############################################################################
+#
+# Extension #340
+# EXT_draw_buffers2 commands
+#
+###############################################################################
+
+ColorMaskIndexedEXT(index, r, g, b, a)
+       return          void
+       param           index           UInt32 in value
+       param           r               Boolean in value
+       param           g               Boolean in value
+       param           b               Boolean in value
+       param           a               Boolean in value
+       category        EXT_draw_buffers2
+       version         2.0
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           ColorMaski
+
+GetBooleanIndexedvEXT(target, index, data)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           data            Boolean out array [COMPSIZE(target)]
+       category        EXT_draw_buffers2
+       version         2.0
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           GetBooleani_v
+
+GetIntegerIndexedvEXT(target, index, data)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           data            Int32 out array [COMPSIZE(target)]
+       category        EXT_draw_buffers2
+       version         2.0
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           GetIntegeri_v
+
+EnableIndexedEXT(target, index)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       category        EXT_draw_buffers2
+       version         2.0
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           Enablei
+
+DisableIndexedEXT(target, index)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       category        EXT_draw_buffers2
+       version         2.0
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           Disablei
+
+IsEnabledIndexedEXT(target, index)
+       return          Boolean
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       category        EXT_draw_buffers2
+       version         2.0
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           IsEnabledi
+
+###############################################################################
+#
+# Extension #341
+# NV_transform_feedback commands
+#
+###############################################################################
+
+BeginTransformFeedbackNV(primitiveMode)
+       return          void
+       param           primitiveMode   GLenum in value
+       category        NV_transform_feedback
+       version         1.5
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           BeginTransformFeedback
+
+EndTransformFeedbackNV()
+       return          void
+       category        NV_transform_feedback
+       version         1.5
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           EndTransformFeedback
+
+TransformFeedbackAttribsNV(count, attribs, bufferMode)
+       return          void
+       param           count           UInt32 in value
+       param           attribs         Int32 in array [COMPSIZE(count)]
+       param           bufferMode      GLenum in value
+       category        NV_transform_feedback
+       version         1.5
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+
+BindBufferRangeNV(target, index, buffer, offset, size)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           buffer          UInt32 in value
+       param           offset          BufferOffset in value
+       param           size            BufferSize in value
+       category        NV_transform_feedback
+       version         1.5
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           BindBufferRange
+
+BindBufferOffsetNV(target, index, buffer, offset)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           buffer          UInt32 in value
+       param           offset          BufferOffset in value
+       category        NV_transform_feedback
+       version         1.5
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           BindBufferOffsetEXT
+
+BindBufferBaseNV(target, index, buffer)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           buffer          UInt32 in value
+       category        NV_transform_feedback
+       version         1.5
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           BindBufferBase
+
+TransformFeedbackVaryingsNV(program, count, varyings, bufferMode)
+       return          void
+       param           program         UInt32 in value
+       param           count           SizeI in value
+       param           varyings        CharPointer in array [count]
+       param           bufferMode      GLenum in value
+       category        NV_transform_feedback
+       version         1.5
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           TransformFeedbackVaryings
+
+ActiveVaryingNV(program, name)
+       return          void
+       param           program         UInt32 in value
+       param           name            Char in array [COMPSIZE(name)]
+       category        NV_transform_feedback
+       version         1.5
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+
+GetVaryingLocationNV(program, name)
+       return          Int32
+       param           program         UInt32 in value
+       param           name            Char in array [COMPSIZE(name)]
+       category        NV_transform_feedback
+       dlflags         notlistable
+       version         1.5
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+
+GetActiveVaryingNV(program, index, bufSize, length, size, type, name)
+       return          void
+       param           program         UInt32 in value
+       param           index           UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           size            SizeI out array [1]
+       param           type            GLenum out array [1]
+       param           name            Char out array [COMPSIZE(program/index/bufSize)]
+       category        NV_transform_feedback
+       dlflags         notlistable
+       version         1.5
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+
+GetTransformFeedbackVaryingNV(program, index, location)
+       return          void
+       param           program         UInt32 in value
+       param           index           UInt32 in value
+       param           location        Int32 out array [1]
+       category        NV_transform_feedback
+       dlflags         notlistable
+       version         1.5
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           GetTransformFeedbackVarying
+
+###############################################################################
+#
+# Extension #342
+# EXT_bindable_uniform commands
+#
+###############################################################################
+
+UniformBufferEXT(program, location, buffer)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           buffer          UInt32 in value
+       category        EXT_bindable_uniform
+       version         2.0
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+GetUniformBufferSizeEXT(program, location)
+       return          Int32
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       category        EXT_bindable_uniform
+       dlflags         notlistable
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+
+GetUniformOffsetEXT(program, location)
+       return          BufferOffset
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       category        EXT_bindable_uniform
+       dlflags         notlistable
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+
+###############################################################################
+#
+# Extension #343
+# EXT_texture_integer extension commands
+#
+###############################################################################
+
+TexParameterIivEXT(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          Int32 in array [COMPSIZE(pname)]
+       category        EXT_texture_integer
+       version         2.0
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       alias           TexParameterIiv
+
+TexParameterIuivEXT(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          UInt32 in array [COMPSIZE(pname)]
+       category        EXT_texture_integer
+       version         2.0
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       alias           TexParameterIuiv
+
+GetTexParameterIivEXT(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_texture_integer
+       dlflags         notlistable
+       version         1.0
+       version         2.0
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       alias           GetTexParameterIiv
+
+GetTexParameterIuivEXT(target, pname, params)
+       return          void
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          UInt32 out array [COMPSIZE(pname)]
+       category        EXT_texture_integer
+       dlflags         notlistable
+       version         1.0
+       version         2.0
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       alias           GetTexParameterIuiv
+
+ClearColorIiEXT(red, green, blue, alpha)
+       return          void
+       param           red             Int32 in value
+       param           green           Int32 in value
+       param           blue            Int32 in value
+       param           alpha           Int32 in value
+       category        EXT_texture_integer
+       version         2.0
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+ClearColorIuiEXT(red, green, blue, alpha)
+       return          void
+       param           red             UInt32 in value
+       param           green           UInt32 in value
+       param           blue            UInt32 in value
+       param           alpha           UInt32 in value
+       category        EXT_texture_integer
+       version         2.0
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+
+###############################################################################
+#
+# Extension #344 - GLX_EXT_texture_from_pixmap
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #345
+# GREMEDY_frame_terminator commands
+#
+###############################################################################
+
+FrameTerminatorGREMEDY()
+       return          void
+       category        GREMEDY_frame_terminator
+       version         1.0
+       extension
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #346
+# NV_conditional_render commands
+#
+###############################################################################
+
+BeginConditionalRenderNV(id, mode)
+       return          void
+       param           id              UInt32 in value
+       param           mode            TypeEnum in value
+       category        NV_conditional_render
+       glfflags        ignore
+       glxflags        ignore
+       alias           BeginConditionalRender
+
+EndConditionalRenderNV()
+       return          void
+       category        NV_conditional_render
+       glfflags        ignore
+       glxflags        ignore
+       alias           EndConditionalRender
+
+###############################################################################
+#
+# Extension #347
+# NV_present_video commands
+#
+###############################################################################
+
+# TBD
+#    void PresentFrameKeyedNV(uint video_slot, uint64EXT minPresentTime,
+#                            uint beginPresentTimeId, uint
+#                            presentDurationId, enum type, enum target0,
+#                            uint fill0, uint key0, enum target1, uint
+#                            fill1, uint key1);
+#
+#    void PresentFrameDualFillNV(uint video_slot, uint64EXT
+#                               minPresentTime, uint beginPresentTimeId,
+#                               uint presentDurationId, enum type, enum
+#                               target0, uint fill0, enum target1, uint
+#                               fill1, enum target2, uint fill2, enum
+#                               target3, uint fill3);
+#
+#    void GetVideoivNV(uint video_slot, enum pname, int *params);
+#    void GetVideouivNV(uint video_slot, enum pname, uint *params);
+#    void GetVideoi64vNV(uint video_slot, enum pname, int64EXT *params);
+#    void GetVideoui64vNV(uint video_slot, enum pname, uint64EXT *params);
+#    void VideoParameterivNV(uint video_slot, enum pname, const int *params);
+
+PresentFrameKeyedNV(video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, key0, target1, fill1, key1)
+       return          void
+       param           video_slot      UInt32 in value
+       param           minPresentTime  UInt64EXT in value
+       param           beginPresentTimeId      UInt32 in value
+       param           presentDurationId       UInt32 in value
+       param           type            GLenum in value
+       param           target0         GLenum in value
+       param           fill0           UInt32 in value
+       param           key0            UInt32 in value
+       param           target1         GLenum in value
+       param           fill1           UInt32 in value
+       param           key1            UInt32 in value
+       category        NV_present_video
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+PresentFrameDualFillNV(video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, target1, fill1, target2, fill2, target3, fill3)
+       return          void
+       param           video_slot      UInt32 in value
+       param           minPresentTime  UInt64EXT in value
+       param           beginPresentTimeId      UInt32 in value
+       param           presentDurationId       UInt32 in value
+       param           type            GLenum in value
+       param           target0         GLenum in value
+       param           fill0           UInt32 in value
+       param           target1         GLenum in value
+       param           fill1           UInt32 in value
+       param           target2         GLenum in value
+       param           fill2           UInt32 in value
+       param           target3         GLenum in value
+       param           fill3           UInt32 in value
+       category        NV_present_video
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetVideoivNV(video_slot, pname, params)
+       return          void
+       param           video_slot      UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        NV_present_video
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVideouivNV(video_slot, pname, params)
+       return          void
+       param           video_slot      UInt32 in value
+       param           pname           GLenum in value
+       param           params          UInt32 out array [COMPSIZE(pname)]
+       category        NV_present_video
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVideoi64vNV(video_slot, pname, params)
+       return          void
+       param           video_slot      UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int64EXT out array [COMPSIZE(pname)]
+       category        NV_present_video
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVideoui64vNV(video_slot, pname, params)
+       return          void
+       param           video_slot      UInt32 in value
+       param           pname           GLenum in value
+       param           params          UInt64EXT out array [COMPSIZE(pname)]
+       category        NV_present_video
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #348 - GLX_NV_video_out
+# Extension #349 - WGL_NV_video_out
+# Extension #350 - GLX_NV_swap_group
+# Extension #351 - WGL_NV_swap_group
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #352
+# EXT_transform_feedback commands
+#
+###############################################################################
+
+# From EXT_draw_buffers2:  GetBooleanIndexedvEXT / GetIntegerIndexedvEXT
+
+BeginTransformFeedbackEXT(primitiveMode)
+       return          void
+       param           primitiveMode   GLenum in value
+       category        EXT_transform_feedback
+       version         2.0
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           BeginTransformFeedback
+
+EndTransformFeedbackEXT()
+       return          void
+       category        EXT_transform_feedback
+       version         2.0
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           EndTransformFeedback
+
+BindBufferRangeEXT(target, index, buffer, offset, size)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           buffer          UInt32 in value
+       param           offset          BufferOffset in value
+       param           size            BufferSize in value
+       category        EXT_transform_feedback
+       version         2.0
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           BindBufferRange
+
+# Not promoted to the OpenGL 3.0 core
+BindBufferOffsetEXT(target, index, buffer, offset)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           buffer          UInt32 in value
+       param           offset          BufferOffset in value
+       category        EXT_transform_feedback
+       version         2.0
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+
+BindBufferBaseEXT(target, index, buffer)
+       return          void
+       param           target          GLenum in value
+       param           index           UInt32 in value
+       param           buffer          UInt32 in value
+       category        EXT_transform_feedback
+       version         2.0
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           BindBufferBase
+
+TransformFeedbackVaryingsEXT(program, count, varyings, bufferMode)
+       return          void
+       param           program         UInt32 in value
+       param           count           SizeI in value
+       param           varyings        CharPointer in array [count]
+       param           bufferMode      GLenum in value
+       category        EXT_transform_feedback
+       version         2.0
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+       alias           TransformFeedbackVaryings
+
+GetTransformFeedbackVaryingEXT(program, index, bufSize, length, size, type, name)
+       return          void
+       param           program         UInt32 in value
+       param           index           UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           size            SizeI out array [1]
+       param           type            GLenum out array [1]
+       param           name            Char out array [COMPSIZE(length)]
+       category        EXT_transform_feedback
+       dlflags         notlistable
+       version         2.0
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       alias           GetTransformFeedbackVarying
+
+###############################################################################
+#
+# Extension #353
+# EXT_direct_state_access commands
+#
+###############################################################################
+
+# New 1.1 client commands
+
+ClientAttribDefaultEXT(mask)
+       return          void
+       param           mask            ClientAttribMask in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glxflags        ignore ### client-handcode client-intercept server-handcode
+
+PushClientAttribDefaultEXT(mask)
+       return          void
+       param           mask            ClientAttribMask in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glxflags        ignore ### client-handcode client-intercept server-handcode
+
+# New 1.0 matrix commands
+
+MatrixLoadfEXT(mode, m)
+       return          void
+       param           mode            MatrixMode in value
+       param           m               Float32 in array [16]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixLoaddEXT(mode, m)
+       return          void
+       param           mode            MatrixMode in value
+       param           m               Float64 in array [16]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixMultfEXT(mode, m)
+       return          void
+       param           mode            MatrixMode in value
+       param           m               Float32 in array [16]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixMultdEXT(mode, m)
+       return          void
+       param           mode            MatrixMode in value
+       param           m               Float64 in array [16]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixLoadIdentityEXT(mode)
+       return          void
+       param           mode            MatrixMode in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixRotatefEXT(mode, angle, x, y, z)
+       return          void
+       param           mode            MatrixMode in value
+       param           angle           Float32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixRotatedEXT(mode, angle, x, y, z)
+       return          void
+       param           mode            MatrixMode in value
+       param           angle           Float64 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixScalefEXT(mode, x, y, z)
+       return          void
+       param           mode            MatrixMode in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixScaledEXT(mode, x, y, z)
+       return          void
+       param           mode            MatrixMode in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixTranslatefEXT(mode, x, y, z)
+       return          void
+       param           mode            MatrixMode in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixTranslatedEXT(mode, x, y, z)
+       return          void
+       param           mode            MatrixMode in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixFrustumEXT(mode, left, right, bottom, top, zNear, zFar)
+       return          void
+       param           mode            MatrixMode in value
+       param           left            Float64 in value
+       param           right           Float64 in value
+       param           bottom          Float64 in value
+       param           top             Float64 in value
+       param           zNear           Float64 in value
+       param           zFar            Float64 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixOrthoEXT(mode, left, right, bottom, top, zNear, zFar)
+       return          void
+       param           mode            MatrixMode in value
+       param           left            Float64 in value
+       param           right           Float64 in value
+       param           bottom          Float64 in value
+       param           top             Float64 in value
+       param           zNear           Float64 in value
+       param           zFar            Float64 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixPopEXT(mode)
+       return          void
+       param           mode            MatrixMode in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixPushEXT(mode)
+       return          void
+       param           mode            MatrixMode in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+# New 1.3 matrix transpose commands
+
+MatrixLoadTransposefEXT(mode, m)
+       return          void
+       param           mode            MatrixMode in value
+       param           m               Float32 in array [16]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixLoadTransposedEXT(mode, m)
+       return          void
+       param           mode            MatrixMode in value
+       param           m               Float64 in array [16]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixMultTransposefEXT(mode, m)
+       return          void
+       param           mode            MatrixMode in value
+       param           m               Float32 in array [16]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MatrixMultTransposedEXT(mode, m)
+       return          void
+       param           mode            MatrixMode in value
+       param           m               Float64 in array [16]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+# New 1.1 texture object commands
+
+TextureParameterfEXT(texture, target, pname, param)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           param           CheckedFloat32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+       vectorequiv     TextureParameterfvEXT
+
+TextureParameterfvEXT(texture, target, pname, params)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+TextureParameteriEXT(texture, target, pname, param)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           param           CheckedInt32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+       vectorequiv     TextureParameterivEXT
+
+TextureParameterivEXT(texture, target, pname, params)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+TextureImage1DEXT(texture, target, level, internalformat, width, border, format, type, pixels)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       extension       soft WINSOFT
+       glfflags        capture-handcode decode-handcode pixel-unpack
+
+TextureImage2DEXT(texture, target, level, internalformat, width, height, border, format, type, pixels)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       extension       soft WINSOFT
+       glfflags        capture-handcode decode-handcode pixel-unpack
+
+TextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, pixels)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### EXT client-handcode server-handcode
+       glxflags        ignore
+       extension       soft WINSOFT
+       glfflags        ignore
+
+TextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### EXT client-handcode server-handcode
+       extension       soft WINSOFT
+       glfflags        ignore
+
+CopyTextureImage1DEXT(texture, target, level, internalformat, x, y, width, border)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore ### EXT
+
+CopyTextureImage2DEXT(texture, target, level, internalformat, x, y, width, height, border)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore ### EXT
+
+CopyTextureSubImage1DEXT(texture, target, level, xoffset, x, y, width)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore ### EXT
+
+CopyTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, x, y, width, height)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore ### EXT
+
+# New 1.1 texture object queries
+
+GetTextureImageEXT(texture, target, level, format, type, pixels)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void out array [COMPSIZE(target/level/format/type)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       glxflags        ignore ### client-handcode server-handcode
+       extension       soft WINSOFT
+       glfflags        capture-execute capture-handcode decode-handcode pixel-pack
+
+GetTextureParameterfvEXT(texture, target, pname, params)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+GetTextureParameterivEXT(texture, target, pname, params)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+GetTextureLevelParameterfvEXT(texture, target, level, pname, params)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           pname           GetTextureParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+GetTextureLevelParameterivEXT(texture, target, level, pname, params)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           pname           GetTextureParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+# New 1.2 3D texture object commands
+
+TextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, pixels)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height/depth)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode EXT
+       extension       soft WINSOFT
+       glfflags        ignore
+
+TextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height/depth)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode EXT
+       extension       soft WINSOFT
+       glfflags        ignore
+
+CopyTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, x, y, width, height)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_direct_state_access
+       glxflags        ignore ### EXT
+       extension       soft WINSOFT
+       glfflags        ignore
+
+# New 1.1 multitexture commands
+
+MultiTexParameterfEXT(texunit, target, pname, param)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           param           CheckedFloat32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+       vectorequiv     MultiTexParameterfvEXT
+
+MultiTexParameterfvEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MultiTexParameteriEXT(texunit, target, pname, param)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           param           CheckedInt32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+       vectorequiv     MultiTexParameterivEXT
+
+MultiTexParameterivEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+
+MultiTexImage1DEXT(texunit, target, level, internalformat, width, border, format, type, pixels)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       extension       soft WINSOFT
+       glfflags        capture-handcode decode-handcode pixel-unpack
+
+MultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, format, type, pixels)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       extension       soft WINSOFT
+       glfflags        capture-handcode decode-handcode pixel-unpack
+
+MultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, type, pixels)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### EXT client-handcode server-handcode
+       extension       soft WINSOFT
+       glfflags        ignore
+
+MultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, pixels)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### EXT client-handcode server-handcode
+       extension       soft WINSOFT
+       glfflags        ignore
+
+CopyMultiTexImage1DEXT(texunit, target, level, internalformat, x, y, width, border)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore ### EXT
+
+CopyMultiTexImage2DEXT(texunit, target, level, internalformat, x, y, width, height, border)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore ### EXT
+
+CopyMultiTexSubImage1DEXT(texunit, target, level, xoffset, x, y, width)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore ### EXT
+
+CopyMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, x, y, width, height)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore ### EXT
+
+# New 1.1 multitexture queries
+
+GetMultiTexImageEXT(texunit, target, level, format, type, pixels)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void out array [COMPSIZE(target/level/format/type)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       glxflags        ignore ### client-handcode server-handcode
+       extension       soft WINSOFT
+       glfflags        capture-execute capture-handcode decode-handcode pixel-pack
+
+GetMultiTexParameterfvEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+GetMultiTexParameterivEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+GetMultiTexLevelParameterfvEXT(texunit, target, level, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           pname           GetTextureParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+GetMultiTexLevelParameterivEXT(texunit, target, level, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           pname           GetTextureParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+# New 1.2 3D multitexture commands
+
+MultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, pixels)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           border          CheckedInt32 in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height/depth)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode EXT
+       extension       soft WINSOFT
+       glfflags        ignore
+
+MultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           format          PixelFormat in value
+       param           type            PixelType in value
+       param           pixels          Void in array [COMPSIZE(format/type/width/height/depth)]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode EXT
+       extension       soft WINSOFT
+       glfflags        ignore
+
+CopyMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           x               WinCoord in value
+       param           y               WinCoord in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_direct_state_access
+       glxflags        ignore ### EXT
+       extension       soft WINSOFT
+       glfflags        ignore
+
+# New 1.2.1 multitexture texture commands
+
+BindMultiTextureEXT(texunit, target, texture)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           texture         Texture in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore ### EXT
+
+EnableClientStateIndexedEXT(array, index)
+       return          void
+       param           array           EnableCap in value
+       param           index           UInt32 in value
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       glxflags        ignore ### client-handcode client-intercept server-handcode
+       extension       soft WINSOFT
+
+DisableClientStateIndexedEXT(array, index)
+       return          void
+       param           array           EnableCap in value
+       param           index           UInt32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glxflags        ignore ### client-handcode client-intercept server-handcode
+
+MultiTexCoordPointerEXT(texunit, size, type, stride, pointer)
+       return          void
+       param           texunit         TextureUnit in value
+       param           size            Int32 in value
+       param           type            TexCoordPointerType in value
+       param           stride          SizeI in value
+       param           pointer         Void in array [COMPSIZE(size/type/stride)] retained
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       glxflags        ignore ### client-handcode client-intercept server-handcode
+       extension       soft WINSOFT
+       glfflags        ignore
+
+MultiTexEnvfEXT(texunit, target, pname, param)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           param           CheckedFloat32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       vectorequiv     MultiTexEnvfvEXT
+       glxflags        ignore
+       glfflags        gl-enum
+
+MultiTexEnvfvEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        gl-enum
+
+MultiTexEnviEXT(texunit, target, pname, param)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           param           CheckedInt32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       vectorequiv     MultiTexEnvivEXT
+       glxflags        ignore
+       glfflags        gl-enum
+
+MultiTexEnvivEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        gl-enum
+
+MultiTexGendEXT(texunit, coord, pname, param)
+       return          void
+       param           texunit         TextureUnit in value
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           param           Float64 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       vectorequiv     MultiTexGendvEXT
+       glxflags        ignore
+       glfflags        gl-enum
+
+MultiTexGendvEXT(texunit, coord, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          Float64 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        gl-enum
+
+MultiTexGenfEXT(texunit, coord, pname, param)
+       return          void
+       param           texunit         TextureUnit in value
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           param           CheckedFloat32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       vectorequiv     MultiTexGenfvEXT
+       glxflags        ignore
+       glfflags        gl-enum
+
+MultiTexGenfvEXT(texunit, coord, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          CheckedFloat32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        gl-enum
+
+MultiTexGeniEXT(texunit, coord, pname, param)
+       return          void
+       param           texunit         TextureUnit in value
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           param           CheckedInt32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       vectorequiv     MultiTexGenivEXT
+       glxflags        ignore
+       glfflags        gl-enum
+
+MultiTexGenivEXT(texunit, coord, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        gl-enum
+
+# New 1.2.1 multitexture texture queries
+
+GetMultiTexEnvfvEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+GetMultiTexEnvivEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureEnvTarget in value
+       param           pname           TextureEnvParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+GetMultiTexGendvEXT(texunit, coord, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          Float64 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+GetMultiTexGenfvEXT(texunit, coord, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+GetMultiTexGenivEXT(texunit, coord, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           coord           TextureCoordName in value
+       param           pname           TextureGenParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+# From EXT_draw_buffers2
+# EnableIndexedEXT
+# DisableIndexedEXT
+# IsEnabledIndexedEXT
+
+GetFloatIndexedvEXT(target, index, data)
+       return          void
+       param           target          TypeEnum in value
+       param           index           UInt32 in value
+       param           data            Float32 out array [COMPSIZE(target)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+
+GetDoubleIndexedvEXT(target, index, data)
+       return          void
+       param           target          TypeEnum in value
+       param           index           UInt32 in value
+       param           data            Float64 out array [COMPSIZE(target)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+
+GetPointerIndexedvEXT(target, index, data)
+       return          void
+       param           target          TypeEnum in value
+       param           index           UInt32 in value
+       param           data            VoidPointer out array [COMPSIZE(target)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+       extension       soft WINSOFT
+
+# New compressed texture commands
+
+CompressedTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, bits)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+CompressedTextureImage2DEXT(texture, target, level, internalformat, width, height, border, imageSize, bits)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+CompressedTextureImage1DEXT(texture, target, level, internalformat, width, border, imageSize, bits)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+CompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+CompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+CompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, bits)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+# New compressed texture query
+
+GetCompressedTextureImageEXT(texture, target, lod, img)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           lod             CheckedInt32 in value
+       param           img             Void out array [COMPSIZE(target/lod)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       glxflags        ignore ### server-handcode
+       extension       soft WINSOFT
+
+# New compressed multitexture commands
+
+CompressedMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, bits)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+CompressedMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, bits)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+CompressedMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, imageSize, bits)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           internalformat  TextureInternalFormat in value
+       param           width           SizeI in value
+       param           border          CheckedInt32 in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+CompressedMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+CompressedMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           yoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+CompressedMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, imageSize, bits)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           level           CheckedInt32 in value
+       param           xoffset         CheckedInt32 in value
+       param           width           SizeI in value
+       param           format          PixelFormat in value
+       param           imageSize       SizeI in value
+       param           bits            Void in array [imageSize]
+       category        EXT_direct_state_access
+       dlflags         handcode
+       glxflags        ignore ### client-handcode server-handcode
+       glfflags        ignore
+       extension       soft WINSOFT
+
+# New compressed multitexture query
+
+GetCompressedMultiTexImageEXT(texunit, target, lod, img)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           lod             CheckedInt32 in value
+       param           img             Void out array [COMPSIZE(target/lod)]
+       category        EXT_direct_state_access
+       dlflags         notlistable
+       glxflags        ignore ### server-handcode
+       extension       soft WINSOFT
+
+# New ARB assembly program named commands
+
+NamedProgramStringEXT(program, target, format, len, string)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           format          ProgramFormat in value
+       param           len             SizeI in value
+       param           string          Void in array [len]
+       category        EXT_direct_state_access
+       subcategory     ARB_vertex_program
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore ### client-handcode server-handcode EXT
+       glextmask       GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+NamedProgramLocalParameter4dEXT(program, target, index, x, y, z, w)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           x               Float64 in value
+       param           y               Float64 in value
+       param           z               Float64 in value
+       param           w               Float64 in value
+       category        EXT_direct_state_access
+       subcategory     ARB_vertex_program
+       vectorequiv     NamedProgramLocalParameter4dvEXT
+       glxvectorequiv  NamedProgramLocalParameter4dvEXT
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore ### EXT
+       glextmask       GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+NamedProgramLocalParameter4dvEXT(program, target, index, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          Float64 in array [4]
+       category        EXT_direct_state_access
+       subcategory     ARB_vertex_program
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore ### EXT
+       glextmask       GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+NamedProgramLocalParameter4fEXT(program, target, index, x, y, z, w)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           x               Float32 in value
+       param           y               Float32 in value
+       param           z               Float32 in value
+       param           w               Float32 in value
+       category        EXT_direct_state_access
+       subcategory     ARB_vertex_program
+       vectorequiv     NamedProgramLocalParameter4fvEXT
+       glxvectorequiv  NamedProgramLocalParameter4fvEXT
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore ### EXT
+       glextmask       GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+NamedProgramLocalParameter4fvEXT(program, target, index, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          Float32 in array [4]
+       category        EXT_direct_state_access
+       subcategory     ARB_vertex_program
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore ### EXT
+       glextmask       GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+# New ARB assembly program named queries
+
+GetNamedProgramLocalParameterdvEXT(program, target, index, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          Float64 out array [4]
+       dlflags         notlistable
+       category        EXT_direct_state_access
+       subcategory     ARB_vertex_program
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore ### client-handcode server-handcode EXT
+       glextmask       GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+GetNamedProgramLocalParameterfvEXT(program, target, index, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          Float32 out array [4]
+       dlflags         notlistable
+       category        EXT_direct_state_access
+       subcategory     ARB_vertex_program
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore ### client-handcode server-handcode EXT
+       glextmask       GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+GetNamedProgramivEXT(program, target, pname, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           pname           ProgramProperty in value
+       param           params          Int32 out array [1]
+       dlflags         notlistable
+       category        EXT_direct_state_access
+       subcategory     ARB_vertex_program
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore ### client-handcode server-handcode EXT
+       glextmask       GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+GetNamedProgramStringEXT(program, target, pname, string)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           pname           ProgramStringProperty in value
+       param           string          Void out array [COMPSIZE(program,pname)]
+       dlflags         notlistable
+       category        EXT_direct_state_access
+       subcategory     ARB_vertex_program
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore ### client-handcode server-handcode EXT
+       glextmask       GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+# New EXT_gpu_program_parameters command
+
+NamedProgramLocalParameters4fvEXT(program, target, index, count, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          Float32 in array [count*4]
+       category        EXT_direct_state_access
+       subcategory     EXT_gpu_program_parameters
+       extension       soft WINSOFT NV10
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_gpu_program_parameters
+
+# New NV_gpu_program4 commands
+
+NamedProgramLocalParameterI4iEXT(program, target, index, x, y, z, w)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           x               Int32 in value
+       param           y               Int32 in value
+       param           z               Int32 in value
+       param           w               Int32 in value
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       vectorequiv     NamedProgramLocalParameterI4ivEXT
+       glxvectorequiv  NamedProgramLocalParameterI4ivEXT
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+NamedProgramLocalParameterI4ivEXT(program, target, index, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          Int32 in array [4]
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+NamedProgramLocalParametersI4ivEXT(program, target, index, count, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          Int32 in array [count*4]
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+NamedProgramLocalParameterI4uiEXT(program, target, index, x, y, z, w)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           x               UInt32 in value
+       param           y               UInt32 in value
+       param           z               UInt32 in value
+       param           w               UInt32 in value
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       vectorequiv     NamedProgramLocalParameterI4uivEXT
+       glxvectorequiv  NamedProgramLocalParameterI4uivEXT
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+NamedProgramLocalParameterI4uivEXT(program, target, index, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          UInt32 in array [4]
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+NamedProgramLocalParametersI4uivEXT(program, target, index, count, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           count           SizeI in value
+       param           params          UInt32 in array [count*4]
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+GetNamedProgramLocalParameterIivEXT(program, target, index, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          Int32 out array [4]
+       dlflags         notlistable
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+GetNamedProgramLocalParameterIuivEXT(program, target, index, params)
+       return          void
+       param           program         UInt32 in value
+       param           target          ProgramTarget in value
+       param           index           UInt32 in value
+       param           params          UInt32 out array [4]
+       dlflags         notlistable
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+# New EXT_texture_integer texture object commands
+
+TextureParameterIivEXT(texture, target, pname, params)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_texture_integer
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+       glextmask       GL_MASK_EXT_texture_integer
+
+TextureParameterIuivEXT(texture, target, pname, params)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          UInt32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_texture_integer
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+       glextmask       GL_MASK_EXT_texture_integer
+
+# New EXT_texture_integer texture object queries
+
+GetTextureParameterIivEXT(texture, target, pname, params)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_texture_integer
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+       glextmask       GL_MASK_EXT_texture_integer
+
+GetTextureParameterIuivEXT(texture, target, pname, params)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          UInt32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_texture_integer
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+       glextmask       GL_MASK_EXT_texture_integer
+
+# New EXT_texture_integer multitexture commands
+
+MultiTexParameterIivEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          CheckedInt32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_texture_integer
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+       glextmask       GL_MASK_EXT_texture_integer
+
+MultiTexParameterIuivEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           pname           TextureParameterName in value
+       param           params          UInt32 in array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_texture_integer
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        ignore
+       glextmask       GL_MASK_EXT_texture_integer
+
+# New EXT_texture_integer multitexture queries
+
+GetMultiTexParameterIivEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_texture_integer
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glfflags        capture-execute gl-enum
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_texture_integer
+
+GetMultiTexParameterIuivEXT(texunit, target, pname, params)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           pname           GetTextureParameter in value
+       param           params          UInt32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_texture_integer
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glfflags        capture-execute gl-enum
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_texture_integer
+
+# New GLSL 2.0 uniform commands
+
+ProgramUniform1fEXT(program, location, v0)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform2fEXT(program, location, v0, v1)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       param           v1              Float32 in value
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform3fEXT(program, location, v0, v1, v2)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       param           v1              Float32 in value
+       param           v2              Float32 in value
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform4fEXT(program, location, v0, v1, v2, v3)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              Float32 in value
+       param           v1              Float32 in value
+       param           v2              Float32 in value
+       param           v3              Float32 in value
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform1iEXT(program, location, v0)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform2iEXT(program, location, v0, v1)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       param           v1              Int32 in value
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform3iEXT(program, location, v0, v1, v2)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       param           v1              Int32 in value
+       param           v2              Int32 in value
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform4iEXT(program, location, v0, v1, v2, v3)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              Int32 in value
+       param           v1              Int32 in value
+       param           v2              Int32 in value
+       param           v3              Int32 in value
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform1fvEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform2fvEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count*2]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform3fvEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count*3]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform4fvEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Float32 in array [count*4]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform1ivEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform2ivEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count*2]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform3ivEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count*3]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform4ivEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           Int32 in array [count*4]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix2fvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count*4]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix3fvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count*9]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix4fvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count*16]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_0
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+# New GLSL 2.1 uniform commands
+
+ProgramUniformMatrix2x3fvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count*6]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_1
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix3x2fvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count*6]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_1
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix2x4fvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count*8]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_1
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix4x2fvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count*8]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_1
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix3x4fvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count*12]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_1
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix4x3fvEXT(program, location, count, transpose, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           transpose       Boolean in value
+       param           value           Float32 in array [count*12]
+       category        EXT_direct_state_access
+       subcategory     VERSION_2_1
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+# New EXT_gpu_shader4 commands
+
+ProgramUniform1uiEXT(program, location, v0)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       category        EXT_direct_state_access
+       subcategory     EXT_gpu_shader4
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform2uiEXT(program, location, v0, v1)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       param           v1              UInt32 in value
+       category        EXT_direct_state_access
+       subcategory     EXT_gpu_shader4
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform3uiEXT(program, location, v0, v1, v2)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       param           v1              UInt32 in value
+       param           v2              UInt32 in value
+       category        EXT_direct_state_access
+       subcategory     EXT_gpu_shader4
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform4uiEXT(program, location, v0, v1, v2, v3)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           v0              UInt32 in value
+       param           v1              UInt32 in value
+       param           v2              UInt32 in value
+       param           v3              UInt32 in value
+       category        EXT_direct_state_access
+       subcategory     EXT_gpu_shader4
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform1uivEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count]
+       category        EXT_direct_state_access
+       subcategory     EXT_gpu_shader4
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform2uivEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count*2]
+       category        EXT_direct_state_access
+       subcategory     EXT_gpu_shader4
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform3uivEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count*3]
+       category        EXT_direct_state_access
+       subcategory     EXT_gpu_shader4
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+ProgramUniform4uivEXT(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt32 in array [count*4]
+       category        EXT_direct_state_access
+       subcategory     EXT_gpu_shader4
+       glfflags        ignore
+       glxflags        ignore
+       extension       soft WINSOFT
+       glextmask       GL_MASK_OpenGL_2_0
+
+# New named buffer commands
+
+NamedBufferDataEXT(buffer, size, data, usage)
+       return          void
+       param           buffer          UInt32 in value
+       param           size            Sizeiptr in value
+       param           data            Void in array [COMPSIZE(size)]
+       param           usage           VertexBufferObjectUsage in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+NamedBufferSubDataEXT(buffer, offset, size, data)
+       return          void
+       param           buffer          UInt32 in value
+       param           offset          Intptr in value
+       param           size            Sizeiptr in value
+       param           data            Void in array [COMPSIZE(size)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+MapNamedBufferEXT(buffer, access)
+       return          VoidPointer
+       param           buffer          UInt32 in value
+       param           access          VertexBufferObjectAccess in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+UnmapNamedBufferEXT(buffer)
+       return          Boolean
+       param           buffer          UInt32 in value
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+# New named buffer queries
+
+GetNamedBufferParameterivEXT(buffer, pname, params)
+       return          void
+       param           buffer          UInt32 in value
+       param           pname           VertexBufferObjectParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+GetNamedBufferPointervEXT(buffer, pname, params)
+       return          void
+       param           buffer          UInt32 in value
+       param           pname           VertexBufferObjectParameter in value
+       param           params          VoidPointer out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+GetNamedBufferSubDataEXT(buffer, offset, size, data)
+       return          void
+       param           buffer          UInt32 in value
+       param           offset          Intptr in value
+       param           size            Sizeiptr in value
+       param           data            Void out array [COMPSIZE(size)]
+       category        EXT_direct_state_access
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glxflags        ignore
+       glfflags        ignore
+
+# New named texture buffer texture object command
+
+TextureBufferEXT(texture, target, internalformat, buffer)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           internalformat  TypeEnum in value
+       param           buffer          UInt32 in value
+       category        EXT_direct_state_access
+       subcategory     EXT_texture_buffer_object
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_texture_buffer_object
+       dlflags         notlistable
+
+# New named texture buffer multitexture command
+
+MultiTexBufferEXT(texunit, target, internalformat, buffer)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           internalformat  TypeEnum in value
+       param           buffer          UInt32 in value
+       category        EXT_direct_state_access
+       subcategory     EXT_texture_buffer_object
+       extension       soft WINSOFT NV50
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_texture_buffer_object
+       dlflags         notlistable
+
+# New named frame buffer object commands
+
+NamedRenderbufferStorageEXT(renderbuffer, internalformat, width, height)
+       return          void
+       param           renderbuffer    Renderbuffer in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+GetNamedRenderbufferParameterivEXT(renderbuffer, pname, params)
+       return          void
+       param           renderbuffer    Renderbuffer in value
+       param           pname           RenderbufferParameterName in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+CheckNamedFramebufferStatusEXT(framebuffer, target)
+       return          FramebufferStatus
+       param           framebuffer     Framebuffer in value
+       param           target          FramebufferTarget in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+NamedFramebufferTexture1DEXT(framebuffer, attachment, textarget, texture, level)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           attachment      FramebufferAttachment in value
+       param           textarget       TextureTarget in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+NamedFramebufferTexture2DEXT(framebuffer, attachment, textarget, texture, level)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           attachment      FramebufferAttachment in value
+       param           textarget       TextureTarget in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+NamedFramebufferTexture3DEXT(framebuffer, attachment, textarget, texture, level, zoffset)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           attachment      FramebufferAttachment in value
+       param           textarget       TextureTarget in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       param           zoffset         CheckedInt32 in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+NamedFramebufferRenderbufferEXT(framebuffer, attachment, renderbuffertarget, renderbuffer)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           attachment      FramebufferAttachment in value
+       param           renderbuffertarget RenderbufferTarget in value
+       param           renderbuffer    Renderbuffer in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+GetNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, params)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           attachment      FramebufferAttachment in value
+       param           pname           FramebufferAttachmentParameterName in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+GenerateTextureMipmapEXT(texture, target)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+GenerateMultiTexMipmapEXT(texunit, target)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+FramebufferDrawBufferEXT(framebuffer, mode)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           mode            DrawBufferMode in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+FramebufferDrawBuffersEXT(framebuffer, n, bufs)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           n               SizeI in value
+       param           bufs            DrawBufferMode in array [n]
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+FramebufferReadBufferEXT(framebuffer, mode)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           mode            ReadBufferMode in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       extension       soft WINSOFT
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_object
+
+GetFramebufferParameterivEXT(framebuffer, pname, params)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           pname           GetFramebufferParameter in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_object
+       dlflags         notlistable
+       extension       soft WINSOFT
+       glxflags        ignore
+       glfflags        capture-execute gl-enum
+
+# New named framebuffer multisample object commands
+
+NamedRenderbufferStorageMultisampleEXT(renderbuffer, samples, internalformat, width, height)
+       return          void
+       param           renderbuffer    Renderbuffer in value
+       param           samples         SizeI in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_direct_state_access
+       subcategory     EXT_framebuffer_multisample
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_EXT_framebuffer_multisample
+
+# New named framebuffer multisample coverage object commands
+
+NamedRenderbufferStorageMultisampleCoverageEXT(renderbuffer, coverageSamples, colorSamples, internalformat, width, height)
+       return          void
+       param           renderbuffer    Renderbuffer in value
+       param           coverageSamples SizeI in value
+       param           colorSamples    SizeI in value
+       param           internalformat  PixelInternalFormat in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       category        EXT_direct_state_access
+       subcategory     NV_framebuffer_multisample_coverage
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_framebuffer_multisample_coverage
+
+# New named geometry program/shader frame buffer object commands
+
+NamedFramebufferTextureEXT(framebuffer, attachment, texture, level)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           attachment      FramebufferAttachment in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+NamedFramebufferTextureLayerEXT(framebuffer, attachment, texture, level, layer)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           attachment      FramebufferAttachment in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       param           layer           CheckedInt32 in value
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+NamedFramebufferTextureFaceEXT(framebuffer, attachment, texture, level, face)
+       return          void
+       param           framebuffer     Framebuffer in value
+       param           attachment      FramebufferAttachment in value
+       param           texture         Texture in value
+       param           level           CheckedInt32 in value
+       param           face            TextureTarget in value
+       category        EXT_direct_state_access
+       subcategory     NV_gpu_program4
+       extension       soft WINSOFT
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_gpu_program4
+
+# New explicit multisample query and commands
+
+TextureRenderbufferEXT(texture, target, renderbuffer)
+       return          void
+       param           texture         Texture in value
+       param           target          TextureTarget in value
+       param           renderbuffer    UInt32 in value
+       category        EXT_direct_state_access
+       subcategory     NV_explicit_multisample
+       extension       soft WINSOFT NV50
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_explicit_multisample
+
+MultiTexRenderbufferEXT(texunit, target, renderbuffer)
+       return          void
+       param           texunit         TextureUnit in value
+       param           target          TextureTarget in value
+       param           renderbuffer    UInt32 in value
+       category        EXT_direct_state_access
+       subcategory     NV_explicit_multisample
+       extension       soft WINSOFT NV50
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+       glextmask       GL_MASK_NV_explicit_multisample
+
+###############################################################################
+#
+# Extension #354
+# EXT_vertex_array_bgra commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_vertex_array_bgra
+
+###############################################################################
+#
+# Extension #355 - WGL_NV_gpu_affinity
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #356
+# EXT_texture_swizzle commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_swizzle
+
+###############################################################################
+#
+# Extension #357
+# NV_explicit_multisample commands
+#
+###############################################################################
+
+# From EXT_draw_buffers2:  GetBooleanIndexedvEXT / GetIntegerIndexedvEXT
+
+GetMultisamplefvNV(pname, index, val)
+       return          void
+       param           pname           GetMultisamplePNameNV in value
+       param           index           UInt32 in value
+       param           val             Float32 out array [2]
+       category        NV_explicit_multisample
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+
+SampleMaskIndexedNV(index, mask)
+       return          void
+       param           index           UInt32 in value
+       param           mask            SampleMaskNV in value
+       category        NV_explicit_multisample
+       glfflags        ignore
+       glxflags        ignore
+
+TexRenderbufferNV(target, renderbuffer)
+       return          void
+       param           target          TextureTarget in value
+       param           renderbuffer    UInt32 in value
+       category        NV_explicit_multisample
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+
+###############################################################################
+#
+# Extension #358
+# NV_transform_feedback2 commands
+#
+###############################################################################
+
+BindTransformFeedbackNV(target, id)
+       return          void
+       param           target          BufferTargetARB in value
+       param           id              UInt32 in value
+       category        NV_transform_feedback2
+       glfflags        ignore
+       glxflags        ignore
+
+DeleteTransformFeedbacksNV(n, ids)
+       return          void
+       param           n               SizeI in value
+       param           ids             UInt32 in array [n]
+       category        NV_transform_feedback2
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+
+GenTransformFeedbacksNV(n, ids)
+       return          void
+       param           n               SizeI in value
+       param           ids             UInt32 out array [n]
+       category        NV_transform_feedback2
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+
+IsTransformFeedbackNV(id)
+       return          Boolean
+       param           id              UInt32 in value
+       category        NV_transform_feedback2
+       dlflags         notlistable
+       glfflags        ignore
+       glxflags        ignore
+
+PauseTransformFeedbackNV()
+       return          void
+       category        NV_transform_feedback2
+       glfflags        ignore
+       glxflags        ignore
+
+ResumeTransformFeedbackNV()
+       return          void
+       category        NV_transform_feedback2
+       glfflags        ignore
+       glxflags        ignore
+
+DrawTransformFeedbackNV(mode, id)
+       return          void
+       param           mode            GLenum in value
+       param           id              UInt32 in value
+       category        NV_transform_feedback2
+       glfflags        ignore
+       glxflags        ignore
+
+###############################################################################
+#
+# Extension #359
+# ATI_meminfo commands
+#
+###############################################################################
+
+# (none)
+newcategory: ATI_meminfo
+
+###############################################################################
+#
+# Extension #360
+# AMD_performance_monitor commands
+#
+###############################################################################
+
+GetPerfMonitorGroupsAMD(numGroups, groupsSize, groups)
+       return          void
+       param           numGroups       Int32 out array [1]
+       param           groupsSize      SizeI in value
+       param           groups          UInt32 out array [groupsSize]
+       category        AMD_performance_monitor
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters)
+       return          void
+       param           group           UInt32 in value
+       param           numCounters     Int32 out array [1]
+       param           maxActiveCounters Int32 out array [1]
+       param           counterSize     SizeI in value
+       param           counters        UInt32 out array [counterSize]
+       category        AMD_performance_monitor
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetPerfMonitorGroupStringAMD(group, bufSize, length, groupString)
+       return          void
+       param           group           UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           groupString     Char out array [bufSize]
+       category        AMD_performance_monitor
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString)
+       return          void
+       param           group           UInt32 in value
+       param           counter         UInt32 in value
+       param           bufSize         SizeI in value
+       param           length          SizeI out array [1]
+       param           counterString   Char out array [bufSize]
+       category        AMD_performance_monitor
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetPerfMonitorCounterInfoAMD(group, counter, pname, data)
+       return          void
+       param           group           UInt32 in value
+       param           counter         UInt32 in value
+       param           pname           GLenum in value
+       param           data            void out array [COMPSIZE(pname)]
+       category        AMD_performance_monitor
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GenPerfMonitorsAMD(n, monitors)
+       return          void
+       param           n               SizeI in value
+       param           monitors        UInt32 out array [n]
+       category        AMD_performance_monitor
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+# 'monitors' is actually in, not out, but extension spec doesn't use const
+DeletePerfMonitorsAMD(n, monitors)
+       return          void
+       param           n               SizeI in value
+       param           monitors        UInt32 out array [n]
+       category        AMD_performance_monitor
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+# 'counterList' is actually in, not out, but extension spec doesn't use const
+SelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, counterList)
+       return          void
+       param           monitor         UInt32 in value
+       param           enable          Boolean in value
+       param           group           UInt32 in value
+       param           numCounters     Int32 in value
+       param           counterList     UInt32 out array [numCounters]
+       category        AMD_performance_monitor
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BeginPerfMonitorAMD(monitor)
+       return          void
+       param           monitor         UInt32 in value
+       category        AMD_performance_monitor
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+EndPerfMonitorAMD(monitor)
+       return          void
+       param           monitor         UInt32 in value
+       category        AMD_performance_monitor
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten)
+       return          void
+       param           monitor         UInt32 in value
+       param           pname           GLenum in value
+       param           dataSize        SizeI in value
+       param           data            UInt32 out array [dataSize]
+       param           bytesWritten    Int32 out array [1]
+       category        AMD_performance_monitor
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #361 - WGL_AMD_gpu_association
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #362
+# AMD_texture_texture4 commands
+#
+###############################################################################
+
+# (none)
+newcategory: AMD_texture_texture4
+
+###############################################################################
+#
+# Extension #363
+# AMD_vertex_shader_tesselator commands
+#
+###############################################################################
+
+TessellationFactorAMD(factor)
+       return          void
+       param           factor          Float32 in value
+       category        AMD_vertex_shader_tesselator
+       version         2.0
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+TessellationModeAMD(mode)
+       return          void
+       param           mode            GLenum in value
+       category        AMD_vertex_shader_tesselator
+       version         2.0
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #364
+# EXT_provoking_vertex commands
+#
+###############################################################################
+
+ProvokingVertexEXT(mode)
+       return          void
+       param           mode            GLenum in value
+       category        EXT_provoking_vertex
+       version         2.1
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #365
+# EXT_texture_snorm commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_snorm
+
+###############################################################################
+#
+# Extension #366
+# AMD_draw_buffers_blend commands
+#
+###############################################################################
+
+# void BlendFuncIndexedAMD(uint buf, enum src, enum dst)
+# void BlendFuncSeparateIndexedAMD(uint buf, enum srcRGB, enum dstRGB, enum srcAlpha, enum dstAlpha)
+# void BlendEquationIndexedAMD(uint buf, enum mode)
+# void BlendEquationSeparateIndexedAMD(uint buf, enum modeRGB, enum modeAlpha)
+
+BlendFuncIndexedAMD(buf, src, dst)
+       return          void
+       param           buf             UInt32 in value
+       param           src             GLenum in value
+       param           dst             GLenum in value
+       category        AMD_draw_buffers_blend
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BlendFuncSeparateIndexedAMD(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)
+       return          void
+       param           buf             UInt32 in value
+       param           srcRGB          GLenum in value
+       param           dstRGB          GLenum in value
+       param           srcAlpha        GLenum in value
+       param           dstAlpha        GLenum in value
+       category        AMD_draw_buffers_blend
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BlendEquationIndexedAMD(buf, mode)
+       return          void
+       param           buf             UInt32 in value
+       param           mode            GLenum in value
+       category        AMD_draw_buffers_blend
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BlendEquationSeparateIndexedAMD(buf, modeRGB, modeAlpha)
+       return          void
+       param           buf             UInt32 in value
+       param           modeRGB         GLenum in value
+       param           modeAlpha       GLenum in value
+       category        AMD_draw_buffers_blend
+       version         2.0
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #367
+# APPLE_texture_range commands
+#
+###############################################################################
+
+TextureRangeAPPLE(target, length, pointer)
+       return          void
+       param           target          GLenum in value
+       param           length          SizeI in value
+       param           pointer         Void in array [length]
+       category        APPLE_texture_range
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetTexParameterPointervAPPLE(target, pname, params)
+       return          void
+       param           target          GLenum in value
+       param           pname           GLenum in value
+       param           params          VoidPointer out array [1]
+       category        APPLE_texture_range
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #368
+# APPLE_float_pixels commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_float_pixels
+
+###############################################################################
+#
+# Extension #369
+# APPLE_vertex_program_evaluators commands
+#
+###############################################################################
+
+EnableVertexAttribAPPLE(index, pname)
+       return          void
+       param           index           UInt32 in value
+       param           pname           GLenum in value
+       category        APPLE_vertex_program_evaluators
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+DisableVertexAttribAPPLE(index, pname)
+       return          void
+       param           index           UInt32 in value
+       param           pname           GLenum in value
+       category        APPLE_vertex_program_evaluators
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsVertexAttribEnabledAPPLE(index, pname)
+       return          Boolean
+       param           index           UInt32 in value
+       param           pname           GLenum in value
+       category        APPLE_vertex_program_evaluators
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MapVertexAttrib1dAPPLE(index, size, u1, u2, stride, order, points)
+       return          void
+       param           index           UInt32 in value
+       param           size            UInt32 in value
+       param           u1              CoordD in value
+       param           u2              CoordD in value
+       param           stride          Int32 in value
+       param           order           CheckedInt32 in value
+       param           points          CoordD in array [COMPSIZE(size/stride/order)]
+       category        APPLE_vertex_program_evaluators
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MapVertexAttrib1fAPPLE(index, size, u1, u2, stride, order, points)
+       return          void
+       param           index           UInt32 in value
+       param           size            UInt32 in value
+       param           u1              CoordF in value
+       param           u2              CoordF in value
+       param           stride          Int32 in value
+       param           order           CheckedInt32 in value
+       param           points          CoordF in array [COMPSIZE(size/stride/order)]
+       category        APPLE_vertex_program_evaluators
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MapVertexAttrib2dAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points)
+       return          void
+       param           index           UInt32 in value
+       param           size            UInt32 in value
+       param           u1              CoordD in value
+       param           u2              CoordD in value
+       param           ustride         Int32 in value
+       param           uorder          CheckedInt32 in value
+       param           v1              CoordD in value
+       param           v2              CoordD in value
+       param           vstride         Int32 in value
+       param           vorder          CheckedInt32 in value
+       param           points          CoordD in array [COMPSIZE(size/ustride/uorder/vstride/vorder)]
+       category        APPLE_vertex_program_evaluators
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MapVertexAttrib2fAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points)
+       return          void
+       param           index           UInt32 in value
+       param           size            UInt32 in value
+       param           u1              CoordF in value
+       param           u2              CoordF in value
+       param           ustride         Int32 in value
+       param           uorder          CheckedInt32 in value
+       param           v1              CoordF in value
+       param           v2              CoordF in value
+       param           vstride         Int32 in value
+       param           vorder          CheckedInt32 in value
+       param           points          CoordF in array [COMPSIZE(size/ustride/uorder/vstride/vorder)]
+       category        APPLE_vertex_program_evaluators
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #370
+# APPLE_aux_depth_stencil commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_aux_depth_stencil
+
+###############################################################################
+#
+# Extension #371
+# APPLE_object_purgeable commands
+#
+###############################################################################
+
+ObjectPurgeableAPPLE(objectType, name, option)
+       return          GLenum
+       param           objectType      GLenum in value
+       param           name            UInt32 in value
+       param           option          GLenum in value
+       category        APPLE_object_purgeable
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ObjectUnpurgeableAPPLE(objectType, name, option)
+       return          GLenum
+       param           objectType      GLenum in value
+       param           name            UInt32 in value
+       param           option          GLenum in value
+       category        APPLE_object_purgeable
+       version         1.5
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetObjectParameterivAPPLE(objectType, name, pname, params)
+       return          void
+       param           objectType      GLenum in value
+       param           name            UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        APPLE_object_purgeable
+       dlflags         notlistable
+       version         1.5
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #372
+# APPLE_row_bytes commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_row_bytes
+
+###############################################################################
+#
+# Extension #373
+# APPLE_rgb_422 commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_rgb_422
+
+###############################################################################
+#
+# Extension #374
+# NV_video_capture commands
+#
+###############################################################################
+
+BeginVideoCaptureNV(video_capture_slot)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       category        NV_video_capture
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindVideoCaptureStreamBufferNV(video_capture_slot, stream, frame_region, offset)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       param           stream          UInt32 in value
+       param           frame_region    GLenum in value
+       param           offset          BufferOffsetARB in value
+       category        NV_video_capture
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+BindVideoCaptureStreamTextureNV(video_capture_slot, stream, frame_region, target, texture)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       param           stream          UInt32 in value
+       param           frame_region    GLenum in value
+       param           target          GLenum in value
+       param           texture         UInt32 in value
+       category        NV_video_capture
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+EndVideoCaptureNV(video_capture_slot)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       category        NV_video_capture
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetVideoCaptureivNV(video_capture_slot, pname, params)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        NV_video_capture
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVideoCaptureStreamivNV(video_capture_slot, stream, pname, params)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       param           stream          UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 out array [COMPSIZE(pname)]
+       category        NV_video_capture
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVideoCaptureStreamfvNV(video_capture_slot, stream, pname, params)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       param           stream          UInt32 in value
+       param           pname           GLenum in value
+       param           params          Float32 out array [COMPSIZE(pname)]
+       category        NV_video_capture
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetVideoCaptureStreamdvNV(video_capture_slot, stream, pname, params)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       param           stream          UInt32 in value
+       param           pname           GLenum in value
+       param           params          Float64 out array [COMPSIZE(pname)]
+       category        NV_video_capture
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+VideoCaptureNV(video_capture_slot, sequence_num, capture_time)
+       return          GLenum
+       param           video_capture_slot      UInt32 in value
+       param           sequence_num    UInt32 out reference
+       param           capture_time    UInt64EXT out reference
+       category        NV_video_capture
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VideoCaptureStreamParameterivNV(video_capture_slot, stream, pname, params)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       param           stream          UInt32 in value
+       param           pname           GLenum in value
+       param           params          Int32 in array [COMPSIZE(pname)]
+       category        NV_video_capture
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VideoCaptureStreamParameterfvNV(video_capture_slot, stream, pname, params)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       param           stream          UInt32 in value
+       param           pname           GLenum in value
+       param           params          Float32 in array [COMPSIZE(pname)]
+       category        NV_video_capture
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VideoCaptureStreamParameterdvNV(video_capture_slot, stream, pname, params)
+       return          void
+       param           video_capture_slot      UInt32 in value
+       param           stream          UInt32 in value
+       param           pname           GLenum in value
+       param           params          Float64 in array [COMPSIZE(pname)]
+       category        NV_video_capture
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #375 - GLX_EXT_swap_control
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #376 - also GLX_NV_copy_image, WGL_NV_copy_image
+# NV_copy_image commands
+#
+###############################################################################
+
+CopyImageSubDataNV(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth)
+       return          void
+       param           srcName         UInt32 in value
+       param           srcTarget       GLenum in value
+       param           srcLevel        Int32 in value
+       param           srcX            Int32 in value
+       param           srcY            Int32 in value
+       param           srcZ            Int32 in value
+       param           dstName         UInt32 in value
+       param           dstTarget       GLenum in value
+       param           dstLevel        Int32 in value
+       param           dstX            Int32 in value
+       param           dstY            Int32 in value
+       param           dstZ            Int32 in value
+       param           width           SizeI in value
+       param           height          SizeI in value
+       param           depth           SizeI in value
+       category        NV_copy_image
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #377
+# EXT_separate_shader_objects commands
+#
+###############################################################################
+
+UseShaderProgramEXT(type, program)
+       return          void
+       param           type            GLenum in value
+       param           program         UInt32 in value
+       category        EXT_separate_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ActiveProgramEXT(program)
+       return          void
+       param           program         UInt32 in value
+       category        EXT_separate_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+CreateShaderProgramEXT(type, string)
+       return          UInt32
+       param           type            GLenum in value
+       param           string          Char in array []
+       category        EXT_separate_shader_objects
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #378
+# NV_parameter_buffer_object2 commands
+#
+###############################################################################
+
+newcategory: NV_parameter_buffer_object2
+
+###############################################################################
+#
+# Extension #379
+# NV_shader_buffer_load commands
+#
+###############################################################################
+
+MakeBufferResidentNV(target, access)
+       return          void
+       param           target          GLenum in value
+       param           access          GLenum in value
+       category        NV_shader_buffer_load
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MakeBufferNonResidentNV(target)
+       return          void
+       param           target          GLenum in value
+       category        NV_shader_buffer_load
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsBufferResidentNV(target)
+       return          Boolean
+       param           target          GLenum in value
+       category        NV_shader_buffer_load
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MakeNamedBufferResidentNV(buffer, access)
+       return          void
+       param           buffer          UInt32 in value
+       param           access          GLenum in value
+       category        NV_shader_buffer_load
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+MakeNamedBufferNonResidentNV(buffer)
+       return          void
+       param           buffer          UInt32 in value
+       category        NV_shader_buffer_load
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IsNamedBufferResidentNV(buffer)
+       return          Boolean
+       param           buffer          UInt32 in value
+       category        NV_shader_buffer_load
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetBufferParameterui64vNV(target, pname, params)
+       return          void
+       param           target          GLenum in value
+       param           pname           GLenum in value
+       param           params          UInt64EXT out array [COMPSIZE(pname)]
+       category        NV_shader_buffer_load
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetNamedBufferParameterui64vNV(buffer, pname, params)
+       return          void
+       param           buffer          UInt32 in value
+       param           pname           GLenum in value
+       param           params          UInt64EXT out array [COMPSIZE(pname)]
+       category        NV_shader_buffer_load
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+GetIntegerui64vNV(value, result)
+       return          void
+       param           value           GLenum in value
+       param           result          UInt64EXT out array [COMPSIZE(value)]
+       category        NV_shader_buffer_load
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+Uniformui64NV(location, value)
+       return          void
+       param           location        Int32 in value
+       param           value           UInt64EXT in value
+       category        NV_shader_buffer_load
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+Uniformui64vNV(location, count, value)
+       return          void
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt64EXT in array [count]
+       category        NV_shader_buffer_load
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetUniformui64vNV(program, location, params)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           params          UInt64EXT out array [COMPSIZE(program/location)]
+       category        NV_shader_buffer_load
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformui64NV(program, location, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           value           UInt64EXT in value
+       category        NV_shader_buffer_load
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ProgramUniformui64vNV(program, location, count, value)
+       return          void
+       param           program         UInt32 in value
+       param           location        Int32 in value
+       param           count           SizeI in value
+       param           value           UInt64EXT in array [count]
+       category        NV_shader_buffer_load
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #380
+# NV_vertex_buffer_unified_memory commands
+#
+###############################################################################
+
+BufferAddressRangeNV(pname, index, address, length)
+       return          void
+       param           pname           GLenum in value
+       param           index           UInt32 in value
+       param           address         UInt64EXT in value
+       param           length          BufferSize in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexFormatNV(size, type, stride)
+       return          void
+       param           size            Int32 in value
+       param           type            GLenum in value
+       param           stride          SizeI in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+NormalFormatNV(type, stride)
+       return          void
+       param           type            GLenum in value
+       param           stride          SizeI in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+ColorFormatNV(size, type, stride)
+       return          void
+       param           size            Int32 in value
+       param           type            GLenum in value
+       param           stride          SizeI in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+IndexFormatNV(type, stride)
+       return          void
+       param           type            GLenum in value
+       param           stride          SizeI in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+TexCoordFormatNV(size, type, stride)
+       return          void
+       param           size            Int32 in value
+       param           type            GLenum in value
+       param           stride          SizeI in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+EdgeFlagFormatNV(stride)
+       return          void
+       param           stride          SizeI in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+SecondaryColorFormatNV(size, type, stride)
+       return          void
+       param           size            Int32 in value
+       param           type            GLenum in value
+       param           stride          SizeI in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+FogCoordFormatNV(type, stride)
+       return          void
+       param           type            GLenum in value
+       param           stride          SizeI in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribFormatNV(index, size, type, normalized, stride)
+       return          void
+       param           index           UInt32 in value
+       param           size            Int32 in value
+       param           type            GLenum in value
+       param           normalized      Boolean in value
+       param           stride          SizeI in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+VertexAttribIFormatNV(index, size, type, stride)
+       return          void
+       param           index           UInt32 in value
+       param           size            Int32 in value
+       param           type            GLenum in value
+       param           stride          SizeI in value
+       category        NV_vertex_buffer_unified_memory
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+GetIntegerui64i_vNV(value, index, result)
+       return          void
+       param           value           GLenum in value
+       param           index           UInt32 in value
+       param           result          UInt64EXT out array [COMPSIZE(value)]
+       category        NV_vertex_buffer_unified_memory
+       dlflags         notlistable
+       version         1.2
+       extension
+       glxsingle       ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #381
+# NV_texture_barrier commands
+#
+###############################################################################
+
+TextureBarrierNV()
+       return          void
+       category        NV_texture_barrier
+       version         1.2
+       extension
+       glxropcode      ?
+       glxflags        ignore
+       offset          ?
+
+###############################################################################
+#
+# Extension #382
+# AMD_shader_stencil_export commands
+#
+###############################################################################
+
+newcategory: AMD_shader_stencil_export
+
+###############################################################################
+#
+# Extension #383
+# AMD_seamless_cubemap_per_texture commands
+#
+###############################################################################
+
+newcategory: AMD_seamless_cubemap_per_texture
+
+###############################################################################
+#
+# Extension #384 - GLX_INTEL_swap_event
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #385
+# AMD_conservative_depth commands
+#
+###############################################################################
+
+newcategory: AMD_conservative_depth
+
diff --git a/src/glx/apple/specs/gl.tm b/src/glx/apple/specs/gl.tm
new file mode 100644 (file)
index 0000000..fb4f851
--- /dev/null
@@ -0,0 +1,322 @@
+AccumOp,*,*,                       GLenum,*,*
+AlphaFunction,*,*,                 GLenum,*,*
+AttribMask,*,*,                            GLbitfield,*,*
+BeginMode,*,*,                     GLenum,*,*
+BinormalPointerTypeEXT,*,*,        GLenum,*,*
+BlendEquationMode,*,*,             GLenum,*,*
+BlendEquationModeEXT,*,*,          GLenum,*,*
+BlendFuncSeparateParameterEXT,*,*,  GLenum,*,*
+BlendingFactorDest,*,*,                    GLenum,*,*
+BlendingFactorSrc,*,*,             GLenum,*,*
+Boolean,*,*,                       GLboolean,*,*
+BooleanPointer,*,*,                GLboolean*,*,*
+Char,*,*,                          GLchar,*,*
+CharPointer,*,*,                   GLchar*,*,*
+CheckedFloat32,*,*,                GLfloat,*,*
+CheckedInt32,*,*,                  GLint,*,*
+ClampColorTargetARB,*,*,           GLenum,*,*
+ClampColorModeARB,*,*,             GLenum,*,*
+ClampedColorF,*,*,                 GLclampf,*,*
+ClampedFloat32,*,*,                GLclampf,*,*
+ClampedFloat64,*,*,                GLclampd,*,*
+ClampedStencilValue,*,*,           GLint,*,*
+ClearBufferMask,*,*,               GLbitfield,*,*
+ClientAttribMask,*,*,              GLbitfield,*,*
+ClipPlaneName,*,*,                 GLenum,*,*
+ColorB,*,*,                        GLbyte,*,*
+ColorD,*,*,                        GLdouble,*,*
+ColorF,*,*,                        GLfloat,*,*
+ColorI,*,*,                        GLint,*,*
+ColorIndexValueD,*,*,              GLdouble,*,*
+ColorIndexValueF,*,*,              GLfloat,*,*
+ColorIndexValueI,*,*,              GLint,*,*
+ColorIndexValueS,*,*,              GLshort,*,*
+ColorIndexValueUB,*,*,             GLubyte,*,*
+ColorMaterialParameter,*,*,        GLenum,*,*
+ColorPointerType,*,*,              GLenum,*,*
+ColorS,*,*,                        GLshort,*,*
+ColorTableParameterPName,*,*,      GLenum,*,*
+ColorTableParameterPNameSGI,*,*,    GLenum,*,*
+ColorTableTarget,*,*,              GLenum,*,*
+ColorTableTargetSGI,*,*,           GLenum,*,*
+ColorUB,*,*,                       GLubyte,*,*
+ColorUI,*,*,                       GLuint,*,*
+ColorUS,*,*,                       GLushort,*,*
+CombinerBiasNV,*,*,                GLenum,*,*
+CombinerComponentUsageNV,*,*,      GLenum,*,*
+CombinerMappingNV,*,*,             GLenum,*,*
+CombinerParameterNV,*,*,           GLenum,*,*
+CombinerPortionNV,*,*,             GLenum,*,*
+CombinerRegisterNV,*,*,                    GLenum,*,*
+CombinerScaleNV,*,*,               GLenum,*,*
+CombinerStageNV,*,*,               GLenum,*,*
+CombinerVariableNV,*,*,                    GLenum,*,*
+CompressedTextureARB,*,*,          GLvoid,*,*
+ControlPointNV,*,*,                GLvoid,*,*
+ControlPointTypeNV,*,*,                    GLenum,*,*
+ConvolutionParameter,*,*,          GLenum,*,*
+ConvolutionParameterEXT,*,*,       GLenum,*,*
+ConvolutionTarget,*,*,             GLenum,*,*
+ConvolutionTargetEXT,*,*,          GLenum,*,*
+CoordD,*,*,                        GLdouble,*,*
+CoordF,*,*,                        GLfloat,*,*
+CoordI,*,*,                        GLint,*,*
+CoordS,*,*,                        GLshort,*,*
+CullFaceMode,*,*,                  GLenum,*,*
+CullParameterEXT,*,*,              GLenum,*,*
+DepthFunction,*,*,                 GLenum,*,*
+DrawBufferMode,*,*,                GLenum,*,*
+DrawBufferName,*,*,                GLint,*,*
+DrawElementsType,*,*,              GLenum,*,*
+ElementPointerTypeATI,*,*,         GLenum,*,*
+EnableCap,*,*,                     GLenum,*,*
+ErrorCode,*,*,                     GLenum,*,*
+EvalMapsModeNV,*,*,                GLenum,*,*
+EvalTargetNV,*,*,                  GLenum,*,*
+FeedbackElement,*,*,               GLfloat,*,*
+FeedbackType,*,*,                  GLenum,*,*
+FenceNV,*,*,                       GLuint,*,*
+FenceConditionNV,*,*,              GLenum,*,*
+FenceParameterNameNV,*,*,          GLenum,*,*
+FfdMaskSGIX,*,*,                   GLbitfield,*,*
+FfdTargetSGIX,*,*,                 GLenum,*,*
+Float32,*,*,                       GLfloat,*,*
+Float32Pointer,*,*,                GLfloat*,*,*
+Float64,*,*,                       GLdouble,*,*
+Float64Pointer,*,*,                GLdouble*,*,*
+FogParameter,*,*,                  GLenum,*,*
+FogPointerTypeEXT,*,*,             GLenum,*,*
+FogPointerTypeIBM,*,*,             GLenum,*,*
+FragmentLightModelParameterSGIX,*,*,GLenum,*,*
+FragmentLightNameSGIX,*,*,         GLenum,*,*
+FragmentLightParameterSGIX,*,*,     GLenum,*,*
+FramebufferAttachment,*,*,         GLenum,*,*
+FramebufferTarget,*,*,             GLenum,*,*
+FrontFaceDirection,*,*,                    GLenum,*,*
+FunctionPointer,*,*,               _GLfuncptr,*,*
+GetColorTableParameterPName,*,*,    GLenum,*,*
+GetColorTableParameterPNameSGI,*,*, GLenum,*,*
+GetConvolutionParameterPName,*,*,   GLenum,*,*
+GetHistogramParameterPName,*,*,     GLenum,*,*
+GetHistogramParameterPNameEXT,*,*,  GLenum,*,*
+GetMapQuery,*,*,                   GLenum,*,*
+GetMinmaxParameterPName,*,*,       GLenum,*,*
+GetMinmaxParameterPNameEXT,*,*,     GLenum,*,*
+GetPName,*,*,                      GLenum,*,*
+GetPointervPName,*,*,              GLenum,*,*
+GetTextureParameter,*,*,           GLenum,*,*
+HintMode,*,*,                      GLenum,*,*
+HintTarget,*,*,                            GLenum,*,*
+HintTargetPGI,*,*,                 GLenum,*,*
+HistogramTarget,*,*,               GLenum,*,*
+HistogramTargetEXT,*,*,                    GLenum,*,*
+IglooFunctionSelectSGIX,*,*,       GLenum,*,*
+IglooParameterSGIX,*,*,                    GLvoid,*,*
+ImageTransformPNameHP,*,*,         GLenum,*,*
+ImageTransformTargetHP,*,*,        GLenum,*,*
+IndexFunctionEXT,*,*,              GLenum,*,*
+IndexMaterialParameterEXT,*,*,     GLenum,*,*
+IndexPointerType,*,*,              GLenum,*,*
+Int16,*,*,                         GLshort,*,*
+Int32,*,*,                         GLint,*,*
+Int8,*,*,                          GLbyte,*,*
+InterleavedArrayFormat,*,*,        GLenum,*,*
+LightEnvParameterSGIX,*,*,         GLenum,*,*
+LightModelParameter,*,*,           GLenum,*,*
+LightName,*,*,                     GLenum,*,*
+LightParameter,*,*,                GLenum,*,*
+LightTextureModeEXT,*,*,           GLenum,*,*
+LightTexturePNameEXT,*,*,          GLenum,*,*
+LineStipple,*,*,                   GLushort,*,*
+List,*,*,                          GLuint,*,*
+ListMode,*,*,                      GLenum,*,*
+ListNameType,*,*,                  GLenum,*,*
+ListParameterName,*,*,             GLenum,*,*
+LogicOp,*,*,                       GLenum,*,*
+MapAttribParameterNV,*,*,          GLenum,*,*
+MapParameterNV,*,*,                GLenum,*,*
+MapTarget,*,*,                     GLenum,*,*
+MapTargetNV,*,*,                   GLenum,*,*
+MapTypeNV,*,*,                     GLenum,*,*
+MaskedColorIndexValueF,*,*,        GLfloat,*,*
+MaskedColorIndexValueI,*,*,        GLuint,*,*
+MaskedStencilValue,*,*,                    GLuint,*,*
+MaterialFace,*,*,                  GLenum,*,*
+MaterialParameter,*,*,             GLenum,*,*
+MatrixIndexPointerTypeARB,*,*,     GLenum,*,*
+MatrixMode,*,*,                            GLenum,*,*
+MatrixTransformNV,*,*,             GLenum,*,*
+MeshMode1,*,*,                     GLenum,*,*
+MeshMode2,*,*,                     GLenum,*,*
+MinmaxTarget,*,*,                  GLenum,*,*
+MinmaxTargetEXT,*,*,               GLenum,*,*
+NormalPointerType,*,*,             GLenum,*,*
+NurbsCallback,*,*,                 GLenum,*,*
+NurbsObj,*,*,                      GLUnurbs*,*,*
+NurbsProperty,*,*,                 GLenum,*,*
+NurbsTrim,*,*,                     GLenum,*,*
+OcclusionQueryParameterNameNV,*,*,  GLenum,*,*
+PixelCopyType,*,*,                 GLenum,*,*
+PixelFormat,*,*,                   GLenum,*,*
+PixelInternalFormat,*,*,           GLenum,*,*
+PixelMap,*,*,                      GLenum,*,*
+PixelStoreParameter,*,*,           GLenum,*,*
+PixelTexGenModeSGIX,*,*,           GLenum,*,*
+PixelTexGenParameterNameSGIS,*,*,   GLenum,*,*
+PixelTransferParameter,*,*,        GLenum,*,*
+PixelTransformPNameEXT,*,*,        GLenum,*,*
+PixelTransformTargetEXT,*,*,       GLenum,*,*
+PixelType,*,*,                     GLenum,*,*
+PointParameterNameARB,*,*,         GLenum,*,*
+PolygonMode,*,*,                   GLenum,*,*
+ProgramNV,*,*,                     GLuint,*,*
+ProgramCharacterNV,*,*,                    GLubyte,*,*
+ProgramParameterNV,*,*,                    GLenum,*,*
+ProgramParameterPName,*,*,         GLenum,*,*
+QuadricCallback,*,*,               GLenum,*,*
+QuadricDrawStyle,*,*,              GLenum,*,*
+QuadricNormal,*,*,                 GLenum,*,*
+QuadricObj,*,*,                            GLUquadric*,*,*
+QuadricOrientation,*,*,                    GLenum,*,*
+ReadBufferMode,*,*,                GLenum,*,*
+RenderbufferTarget,*,*,                    GLenum,*,*
+RenderingMode,*,*,                 GLenum,*,*
+ReplacementCodeSUN,*,*,                    GLuint,*,*
+ReplacementCodeTypeSUN,*,*,        GLenum,*,*
+SamplePassARB,*,*,                 GLenum,*,*
+SamplePatternEXT,*,*,              GLenum,*,*
+SamplePatternSGIS,*,*,             GLenum,*,*
+SecondaryColorPointerTypeIBM,*,*,   GLenum,*,*
+SelectName,*,*,                            GLuint,*,*
+SeparableTarget,*,*,               GLenum,*,*
+SeparableTargetEXT,*,*,                    GLenum,*,*
+ShadingModel,*,*,                  GLenum,*,*
+SizeI,*,*,                         GLsizei,*,*
+SpriteParameterNameSGIX,*,*,       GLenum,*,*
+StencilFunction,*,*,               GLenum,*,*
+StencilFaceDirection,*,*,          GLenum,*,*
+StencilOp,*,*,                     GLenum,*,*
+StencilValue,*,*,                  GLint,*,*
+String,*,*,                        const GLubyte *,*,*
+StringName,*,*,                            GLenum,*,*
+TangentPointerTypeEXT,*,*,         GLenum,*,*
+TessCallback,*,*,                  GLenum,*,*
+TessContour,*,*,                   GLenum,*,*
+TessProperty,*,*,                  GLenum,*,*
+TesselatorObj,*,*,                 GLUtesselator*,*,*
+TexCoordPointerType,*,*,           GLenum,*,*
+Texture,*,*,                       GLuint,*,*
+TextureComponentCount,*,*,         GLint,*,*
+TextureCoordName,*,*,              GLenum,*,*
+TextureEnvParameter,*,*,           GLenum,*,*
+TextureEnvTarget,*,*,              GLenum,*,*
+TextureFilterSGIS,*,*,             GLenum,*,*
+TextureGenParameter,*,*,           GLenum,*,*
+TextureNormalModeEXT,*,*,          GLenum,*,*
+TextureParameterName,*,*,          GLenum,*,*
+TextureTarget,*,*,                 GLenum,*,*
+TextureUnit,*,*,                   GLenum,*,*
+UInt16,*,*,                        GLushort,*,*
+UInt32,*,*,                        GLuint,*,*
+UInt8,*,*,                         GLubyte,*,*
+VertexAttribEnum,*,*,              GLenum,*,*
+VertexAttribEnumNV,*,*,                    GLenum,*,*
+VertexAttribPointerTypeNV,*,*,     GLenum,*,*
+VertexPointerType,*,*,             GLenum,*,*
+VertexWeightPointerTypeEXT,*,*,     GLenum,*,*
+Void,*,*,                          GLvoid,*,*
+VoidPointer,*,*,                   GLvoid*,*,*
+ConstVoidPointer,*,*,              GLvoid* const,*,*
+WeightPointerTypeARB,*,*,          GLenum,*,*
+WinCoord,*,*,                      GLint,*,*
+void,*,*,                          *,*,*
+ArrayObjectPNameATI,*,*,           GLenum,*,*
+ArrayObjectUsageATI,*,*,           GLenum,*,*,
+ConstFloat32,*,*,                  GLfloat,*,*
+ConstInt32,*,*,                            GLint,*,*
+ConstUInt32,*,*,                   GLuint,*,*
+ConstVoid,*,*,                     GLvoid,*,*
+DataTypeEXT,*,*,                   GLenum,*,*
+FragmentOpATI,*,*,                 GLenum,*,*
+GetTexBumpParameterATI,*,*,        GLenum,*,*
+GetVariantValueEXT,*,*,                    GLenum,*,*
+ParameterRangeEXT,*,*,             GLenum,*,*
+PreserveModeATI,*,*,               GLenum,*,*
+ProgramFormatARB,*,*,              GLenum,*,*
+ProgramTargetARB,*,*,              GLenum,*,*
+ProgramTarget,*,*,                 GLenum,*,*
+ProgramPropertyARB,*,*,                    GLenum,*,*
+ProgramStringPropertyARB,*,*,      GLenum,*,*
+ScalarType,*,*,                            GLenum,*,*
+SwizzleOpATI,*,*,                  GLenum,*,*
+TexBumpParameterATI,*,*,           GLenum,*,*
+VariantCapEXT,*,*,                 GLenum,*,*
+VertexAttribPointerPropertyARB,*,*, GLenum,*,*
+VertexAttribPointerTypeARB,*,*,     GLenum,*,*
+VertexAttribPropertyARB,*,*,       GLenum,*,*
+VertexShaderCoordOutEXT,*,*,       GLenum,*,*
+VertexShaderOpEXT,*,*,             GLenum,*,*
+VertexShaderParameterEXT,*,*,      GLenum,*,*
+VertexShaderStorageTypeEXT,*,*,     GLenum,*,*
+VertexShaderTextureUnitParameter,*,*,  GLenum,*,*
+VertexShaderWriteMaskEXT,*,*,      GLenum,*,*
+VertexStreamATI,*,*,               GLenum,*,*
+PNTrianglesPNameATI,*,*,           GLenum,*,*
+# ARB_vertex_buffer_object types and core equivalents for new types
+BufferOffset,*,*,                  GLintptr,*,*
+BufferSize,*,*,                            GLsizeiptr,*,*
+BufferAccessARB,*,*,               GLenum,*,*
+BufferOffsetARB,*,*,               GLintptrARB,*,*
+BufferPNameARB,*,*,                GLenum,*,*
+BufferPointerNameARB,*,*,          GLenum,*,*
+BufferSizeARB,*,*,                 GLsizeiptrARB,*,*
+BufferTargetARB,*,*,               GLenum,*,*
+BufferUsageARB,*,*,                GLenum,*,*
+# APPLE_fence
+ObjectTypeAPPLE,*,*,               GLenum,*,*
+# APPLE_vertex_array_range
+VertexArrayPNameAPPLE,*,*,         GLenum,*,*
+# ATI_draw_buffers
+DrawBufferModeATI,*,*,             GLenum,*,*
+# NV_half
+Half16NV,*,*,                      GLhalfNV,*,*
+# NV_pixel_data_range
+PixelDataRangeTargetNV,*,*,        GLenum,*,*
+# Generic types for as-yet-unspecified enums
+TypeEnum,*,*,                      GLenum,*,*
+GLbitfield,*,*,                            GLbitfield,*,*
+GLenum,*,*,                        GLenum,*,*
+Int64,*,*,                         GLint64,*,*
+UInt64,*,*,                        GLuint64,*,*
+# Object handle & data pointers
+handleARB,*,*,                     GLhandleARB,*,*
+charARB,*,*,                       GLcharARB,*,*
+charPointerARB,*,*,                GLcharARB*,*,*
+sync,*,*,                          GLsync,*,*,
+# EXT_timer_query
+Int64EXT,*,*,                      GLint64EXT,*,*
+UInt64EXT,*,*,                     GLuint64EXT,*,*
+# EXT_direct_state_access
+FramebufferAttachment,*,*,         GLenum,*,*
+FramebufferAttachmentParameterName,*,*, GLenum,*,*
+Framebuffer,*,*,                   GLuint,*,*
+FramebufferStatus,*,*,             GLenum,*,*
+FramebufferTarget,*,*,             GLenum,*,*
+GetFramebufferParameter,*,*,       GLenum,*,*
+Intptr,*,*,                        GLintptr,*,*
+ProgramFormat,*,*,                 GLenum,*,*
+ProgramProperty,*,*,               GLenum,*,*
+ProgramStringProperty,*,*,         GLenum,*,*
+ProgramTarget,*,*,                 GLenum,*,*
+Renderbuffer,*,*,                  GLuint,*,*
+RenderbufferParameterName,*,*,     GLenum,*,*
+Sizeiptr,*,*,                      GLsizeiptr,*,*
+TextureInternalFormat,*,*,         GLenum,*,*
+VertexBufferObjectAccess,*,*,      GLenum,*,*
+VertexBufferObjectParameter,*,*,    GLenum,*,*
+VertexBufferObjectUsage,*,*,       GLenum,*,*
+# ARB_map_buffer_range
+BufferAccessMask,*,*,              GLbitfield,*,*
+# NV_explicit_multisample
+GetMultisamplePNameNV,*,*,         GLenum,*,*
+SampleMaskNV,*,*,                  GLbitfield,*,*
diff --git a/src/glx/apple/specs/glx.spec b/src/glx/apple/specs/glx.spec
new file mode 100644 (file)
index 0000000..b8b8df2
--- /dev/null
@@ -0,0 +1,602 @@
+# Copyright (c) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2006-2010 The Khronos Group, Inc.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+#
+# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
+
+required-props:
+param:         retval retained
+dlflags:       notlistable handcode nop
+glxflags:      client-handcode server-handcode
+glxvendorglx:  *
+vectorequiv:   *
+category:      pixel-rw bgn-end display-list drawing drawing-control feedback framebuf misc modeling pixel-op pixel-rw state-req xform glx glxopcode
+glxopcode:             *
+
+###############################################################################
+#
+# GLX1.0 commands
+#
+###############################################################################
+Render()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        1
+
+
+RenderLarge()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        2
+
+
+CreateContext(gc_id, screen, visual, share_list)
+       return           void
+       param            gc_id          Int32 in value
+       param            screen         Int32 in value
+       param            visual         Int32 in value
+       param            share_list     Int32 in value
+       glxflags         client-handcode server-handcode
+       category         glx
+       dlflags          notlistable
+       glxopcode        3
+
+
+DestroyContext(context)
+       return           void
+       param            context       Int32 in value
+       glxflags         client-handcode server-handcode
+       category         glx
+       dlflags          notlistable
+       glxopcode        4
+
+
+MakeCurrent(drawable, context)
+       return           void
+       param            drawable       Int32 in value
+       param            context       Int32 in value
+       glxflags         client-handcode server-handcode
+       category         glx
+       dlflags          notlistable
+       glxopcode        5
+
+
+IsDirect(dpy, context)
+       return          void
+       param           dpy             Int32 in value
+       param           context         Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       6
+
+
+QueryVersion(major, minor)
+       return           void
+       param            major          Int32 out reference
+       param            minor          Int32 out reference
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        7
+
+
+WaitGL(context)
+       return           void
+       param            context        Int32 in value
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        8
+
+
+WaitX()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        9
+
+
+CopyContext(source, dest, mask)
+       return           void
+       param            source         Int32 in value
+       param            dest           Int32 in value
+       param            mask           Int32 in value
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        10
+
+
+SwapBuffers(drawable)
+       return           void
+       param            drawable       Int32 in value
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        11
+
+
+UseXFont(font, first, count, list_base)
+       return           void
+       param            font           Int32 in value
+       param            first          Int32 in value
+       param            count          Int32 in value
+       param            list_base      Int32 in value
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        12
+
+
+CreateGLXPixmap(visual, pixmap, glxpixmap)
+       return           void
+       param            visual         Int32 in value
+       param            pixmap         Int32 in value
+       param            glxpixmap      Int32 in value
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        13
+
+GetVisualConfigs()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxopcode        14
+
+
+DestroyGLXPixmap(pixmap)
+       return           void
+       param            pixmap         Int32 in value
+       glxflags         client-handcode
+       category         glx
+       dlflags          notlistable
+       glxopcode        15
+
+
+VendorPrivate()
+       return          void
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       16
+
+
+VendorPrivateWithReply()
+       return          void
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       17
+
+###############################################################################
+#
+# GLX1.1 commands
+#
+###############################################################################
+QueryExtensionsString(screen)
+       return          void
+       param           screen          Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       18
+
+QueryServerString(screen, name)
+       return          void
+       param           screen          Int32 in value
+       param           name            Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       19
+
+ClientInfo()
+       return          void
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxopcode       20
+
+###############################################################################
+#
+# GLX1.3 commands
+#
+###############################################################################
+GetFBConfigs()
+       return          void
+       category        glx
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       glxopcode       21
+
+CreatePixmap(config, pixmap, glxpixmap)
+       return          void
+       param           config          Int32 in value
+       param           pixmap          Int32 in value
+       param           glxpixmap       Int32 in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       22
+
+DestroyPixmap(glxpixmap)
+       return          void
+       param           glxpixmap       Int32 in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       23
+
+CreateNewContext(config, render_type, share_list, direct)
+       return          void
+       param           config          Int32 in value
+       param           render_type     Int32 in value
+       param           share_list      Int32 in value
+       param           direct          Int32 in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       24
+
+QueryContext()
+       return          void
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       25
+
+MakeContextCurrent(drawable, readdrawable, context)
+       return          void
+       param           drawable        Int32 in value
+       param           readdrawable    Int32 in value
+       param           context         Int32 in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       26
+
+CreatePbuffer(config, pbuffer)
+       return          void
+       param           config          Int32 in value
+       param           pbuffer         Int32 in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       27
+
+DestroyPbuffer(pbuffer)
+       return          void
+       param           pbuffer         Int32 in value
+       dlflags         notlistable
+       glxflags        client-handcode
+       category        glx
+       glxopcode       28
+
+GetDrawableAttributes(drawable)
+       return          void
+       param           drawable        Int32 in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       29
+
+ChangeDrawableAttributes(drawable)
+       return          void
+       param           drawable        Int32 in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       30
+
+CreateWindow(config, window, glxwindow)
+       return          void
+       param           config          Int32 in value
+       param           window          Int32 in value
+       param           glxwindow       Int32 in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       31
+
+DestroyWindow(glxwindow)
+       return          void
+       param           glxwindow       Int32 in value
+       dlflags         notlistable
+       glxflags        client-handcode server-handcode
+       category        glx
+       glxopcode       32
+
+###############################################################################
+#
+# IRIX5.3 extension commands
+#
+###############################################################################
+
+###############################################################################
+#
+# SGI_swap_control extension commands
+#
+###############################################################################
+SwapIntervalSGI()
+       return          void
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65536
+
+###############################################################################
+#
+# IRIX5.3-PATCH154 extension commands
+#
+###############################################################################
+
+###############################################################################
+#
+# SGI_make_current_read extension commands
+#
+###############################################################################
+MakeCurrentReadSGI(drawable, readdrawable, context)
+       return          void
+       param           drawable        Int32 in value
+       param           readdrawable    Int32 in value
+       param           context         Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65537
+
+###############################################################################
+#
+# SGIX_video_source extension commands
+#
+###############################################################################
+CreateGLXVideoSourceSGIX(dpy, screen, server, path, class, node)
+       return          void
+       param           dpy                     Int32 in value
+       param           screen                  Int32 in value
+       param           server                  Int32 in value
+       param           path                    Int32 in value
+       param           class                   Int32 in value
+       param           node                    Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65538
+
+DestroyGLXVideoSourceSGIX(dpy, glxvideosource)
+       return          void
+       param           dpy                     Int32 in value
+       param           glxvideosource          Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65539
+
+###############################################################################
+#
+# IRIX6.2 extension commands
+#
+###############################################################################
+
+###############################################################################
+#
+# EXT_import_context extension commands
+#
+###############################################################################
+QueryContextInfoEXT()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxvendorglx     1024
+
+###############################################################################
+#
+# SGIX_fbconfig extension commands
+#
+###############################################################################
+GetFBConfigsSGIX()
+       return           void
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxvendorglx     65540
+
+CreateContextWithConfigSGIX(gc_id, screen, config, share_list)
+       return           void
+       param            gc_id          Int32 in value
+       param            screen         Int32 in value
+       param            config         Int32 in value
+       param            share_list     Int32 in value
+       glxflags         client-handcode server-handcode
+       category         glx
+       dlflags          notlistable
+       glxvendorglx     65541
+
+CreateGLXPixmapWithConfigSGIX(config, pixmap, glxpixmap)
+       return           void
+       param            config         Int32 in value
+       param            pixmap         Int32 in value
+       param            glxpixmap      Int32 in value
+       category         glx
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       glxvendorglx     65542
+
+###############################################################################
+#
+# SGIX_pbuffer extension commands
+#
+###############################################################################
+
+CreateGLXPbufferSGIX(config, pbuffer)
+       return           void
+       param            config         Int32 in value
+       param            pbuffer        Int32 in value
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       category         glx
+       glxvendorglx     65543
+
+DestroyGLXPbufferSGIX(pbuffer)
+       return           void
+       param            pbuffer        Int32 in value
+       dlflags          notlistable
+       glxflags         client-handcode
+       category         glx
+       glxvendorglx     65544
+
+ChangeDrawableAttributesSGIX(drawable)
+       return           void
+       param            drawable       Int32 in value
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       category         glx
+       glxvendorglx     65545
+
+GetDrawableAttributesSGIX(drawable)
+       return           void
+       param            drawable       Int32 in value
+       dlflags          notlistable
+       glxflags         client-handcode server-handcode
+       category         glx
+       glxvendorglx     65546
+
+###############################################################################
+#
+# SGIX_swap_group extension commands
+#
+###############################################################################
+
+JoinSwapGroupSGIX(window,group)
+       return          void
+       param           window          Int32 in value
+       param           group           Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65547
+
+###############################################################################
+#
+# SGIX_swap_barrier extension commands
+#
+###############################################################################
+
+BindSwapBarrierSGIX(window,barrier)
+       return          void
+       param           window          Int32 in value
+       param           barrier         Int32 in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65548
+
+QueryMaxSwapBarriersSGIX()
+       return          void
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65549
+
+###############################################################################
+#
+# SGIX_hyperpipe extension commands
+#
+###############################################################################
+
+QueryHyperpipeNetworkSGIX(dpy, npipes)
+       return          GLXHyperpipeNetworkPointer
+       param           dpy             Display out reference
+       param           npipes          int out reference
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65550
+
+HyperpipeConfigSGIX(dpy, networkId, npipes, cfg, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           networkId       int in value
+       param           npipes          int in value
+       param           cfg             GLXHyperpipeConfig in array[npipes]
+       param           hpId            int out reference
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65552
+
+QueryHyperpipeConfigSGIX(dpy, hpId, npipes)
+       return          GLXHyperpipeConfigPointer
+       param           dpy             Display out reference
+       param           hpId            int in value
+       param           npipes          int out reference
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65551
+
+DestroyHyperpipeConfigSGIX(dpy, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           hpId            int in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    65553
+
+BindHyperpipeSGIX(dpy, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           hpId            int in value
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    ???
+
+QueryHyperpipeBestAttribSGIX(dpy, timeSlice, attrib, size, attribList, returnAttribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           attribList      Void in array[size]
+       param           returnAttribList Void out array[size]
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    ???
+
+HyperpipeAttribSGIX(dpy, timeSlice, attrib, size, attribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           attribList      void in array[size]
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    ???
+
+QueryHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, returnAttribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           returnAttribList void in array[size]
+       glxflags        client-handcode server-handcode
+       category        glx
+       dlflags         notlistable
+       glxvendorglx    ???
diff --git a/src/glx/apple/specs/glxenum.spec b/src/glx/apple/specs/glxenum.spec
new file mode 100644 (file)
index 0000000..547f19e
--- /dev/null
@@ -0,0 +1,420 @@
+# Copyright (c) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2006-2010 The Khronos Group, Inc.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+#
+# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
+
+# This is the GLX enumerant registry.
+#
+# It is an extremely important file. Do not mess with it unless
+# you know what you're doing and have permission to do so.
+#
+# Rules for modification are the same as the rules for the OpenGL
+# enumerant registry (gl.spec). Basically, don't modify this
+# file unless you're the Khronos API Registrar.
+
+Extensions define:
+       VERSION_1_1                                     = 1
+       VERSION_1_2                                     = 1
+       VERSION_1_3                                     = 1
+       VERSION_1_4                                     = 1
+       SGIS_multisample                                = 1
+       EXT_visual_info                                 = 1
+       SGI_swap_control                                = 1
+       SGI_video_sync                                  = 1
+       SGI_make_current_read                           = 1
+       SGIX_video_source                               = 1
+       EXT_visual_rating                               = 1
+       EXT_import_context                              = 1
+       SGIX_fbconfig                                   = 1
+       SGIX_pbuffer                                    = 1
+       SGI_cushion                                     = 1
+       SGIX_video_resize                               = 1
+       SGIX_dmbuffer                                   = 1
+       SGIX_swap_group                                 = 1
+       SGIX_swap_barrier                               = 1
+       SGIS_blended_overlay                            = 1
+       SGIS_shared_multisample                         = 1
+       SUN_get_transparent_index                       = 1
+       3DFX_multisample                                = 1
+       MESA_copy_sub_buffer                            = 1
+       MESA_pixmap_colormap                            = 1
+       MESA_release_buffers                            = 1
+       MESA_set_3dfx_mode                              = 1
+       SGIX_visual_select_group                        = 1
+       SGIX_hyperpipe                            = 1
+
+GLXStringName enum:
+       VENDOR                                          = 0x1
+       VERSION                                         = 0x2
+       EXTENSIONS                                      = 0x3
+
+GLXErrorCode enum:
+       BAD_SCREEN                                      = 1
+       BAD_ATTRIBUTE                                   = 2
+       NO_EXTENSION                                    = 3
+       BAD_VISUAL                                      = 4
+       BAD_CONTEXT                                     = 5
+       BAD_VALUE                                       = 6
+       BAD_ENUM                                        = 7
+       BAD_HYPERPIPE_CONFIG_SGIX                       = 91            # SGIX_hyperpipe
+       BAD_HYPERPIPE_SGIX                              = 92            #   "
+
+# Reserved bits in bitfields of various purposes
+
+GLXDrawableTypeMask enum:
+       WINDOW_BIT                                      = 0x00000001    # DRAWABLE_TYPE value
+       PIXMAP_BIT                                      = 0x00000002    #   "
+       PBUFFER_BIT                                     = 0x00000004    #   "
+       WINDOW_BIT_SGIX                                 = 0x00000001    # DRAWABLE_TYPE_SGIX value
+       PIXMAP_BIT_SGIX                                 = 0x00000002    #   "
+       PBUFFER_BIT_SGIX                                = 0x00000004    #   "
+
+GLXRenderTypeMask enum:
+       RGBA_BIT                                        = 0x00000001    # RENDER_TYPE value
+       COLOR_INDEX_BIT                                 = 0x00000002    #   "
+       RGBA_BIT_SGIX                                   = 0x00000001    # RENDER_TYPE_SGIX value
+       COLOR_INDEX_BIT_SGIX                            = 0x00000002    #   "
+       RGBA_FLOAT_BIT_ARB                              = 0x00000004    # RENDER_TYPE value (from ARB_fbconfig_float)
+       RGBA_UNSIGNED_FLOAT_BIT_EXT                     = 0x00000008    # RENDER_TYPE value (from EXT_fbconfig_packed_float)
+
+GLXSyncType enum:
+       SYNC_FRAME_SGIX                                 = 0x00000000    # ChannelRectSyncSGIX synctype
+       SYNC_SWAP_SGIX                                  = 0x00000001    #   "
+
+GLXEventMask enum:
+       PBUFFER_CLOBBER_MASK                            = 0x08000000    # SelectEvent mask
+       BUFFER_CLOBBER_MASK_SGIX                        = 0x08000000    # SelectEventSGIX mask
+       BUFFER_SWAP_COMPLETE_INTEL_MASK                 = 0x04000000    # SelectEvent mask (for GLX_INTEL_swap_event)
+
+GLXPbufferClobberMask enum:
+       FRONT_LEFT_BUFFER_BIT                           = 0x00000001    # PbufferClobberEvent mask
+       FRONT_RIGHT_BUFFER_BIT                          = 0x00000002    #   "
+       BACK_LEFT_BUFFER_BIT                            = 0x00000004    #   "
+       BACK_RIGHT_BUFFER_BIT                           = 0x00000008    #   "
+       AUX_BUFFERS_BIT                                 = 0x00000010    #   "
+       DEPTH_BUFFER_BIT                                = 0x00000020    #   "
+       STENCIL_BUFFER_BIT                              = 0x00000040    #   "
+       ACCUM_BUFFER_BIT                                = 0x00000080    #   "
+       FRONT_LEFT_BUFFER_BIT_SGIX                      = 0x00000001    # BufferClobberEventSGIX mask
+       FRONT_RIGHT_BUFFER_BIT_SGIX                     = 0x00000002    #   "
+       BACK_LEFT_BUFFER_BIT_SGIX                       = 0x00000004    #   "
+       BACK_RIGHT_BUFFER_BIT_SGIX                      = 0x00000008    #   "
+       AUX_BUFFERS_BIT_SGIX                            = 0x00000010    #   "
+       DEPTH_BUFFER_BIT_SGIX                           = 0x00000020    #   "
+       STENCIL_BUFFER_BIT_SGIX                         = 0x00000040    #   "
+       ACCUM_BUFFER_BIT_SGIX                           = 0x00000080    #   "
+       SAMPLE_BUFFERS_BIT_SGIX                         = 0x00000100    #   "
+
+GLXHyperpipeTypeMask enum:
+       HYPERPIPE_DISPLAY_PIPE_SGIX                     = 0x00000001    # SGIX_hyperpipe
+       HYPERPIPE_RENDER_PIPE_SGIX                      = 0x00000002    #   "
+
+GLXHyperpipeAttrib enum:
+       PIPE_RECT_SGIX                                  = 0x00000001    # SGIX_hyperpipe
+       PIPE_RECT_LIMITS_SGIX                           = 0x00000002    #   "
+       HYPERPIPE_STEREO_SGIX                           = 0x00000003    #   "
+       HYPERPIPE_PIXEL_AVERAGE_SGIX                    = 0x00000004    #   "
+
+GLXHyperpipeMisc enum:
+       HYPERPIPE_PIPE_NAME_LENGTH_SGIX                 = 80            # SGIX_hyperpipe
+
+GLXBindToTextureTargetMask enum:
+       TEXTURE_1D_BIT_EXT                              = 0x00000001    # EXT_texture_from_pixmap
+       TEXTURE_2D_BIT_EXT                              = 0x00000002
+       TEXTURE_RECTANGLE_BIT_EXT                       = 0x00000004
+
+# CONTEXT_FLAGS_ARB bits
+GLXContextFlags enum:
+       CONTEXT_DEBUG_BIT_ARB                           = 0x00000001    # ARB_create_context
+       CONTEXT_FORWARD_COMPATIBLE_BIT_ARB              = 0x00000002    # ARB_create_context
+
+# CONTEXT_PROFILE_MASK_ARB bits
+GLXContextProfileMask enum:
+       CONTEXT_CORE_PROFILE_BIT_ARB                    = 0x00000001    # ARB_create_context_profile
+       CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB           = 0x00000002    # ARB_create_context_profile
+
+GLXAttribute enum:
+       USE_GL                                          = 1             # Visual attributes
+       BUFFER_SIZE                                     = 2             #   "
+       LEVEL                                           = 3             #   "
+       RGBA                                            = 4             #   "
+       DOUBLEBUFFER                                    = 5             #   "
+       STEREO                                          = 6             #   "
+       AUX_BUFFERS                                     = 7             #   "
+       RED_SIZE                                        = 8             #   "
+       GREEN_SIZE                                      = 9             #   "
+       BLUE_SIZE                                       = 10            #   "
+       ALPHA_SIZE                                      = 11            #   "
+       DEPTH_SIZE                                      = 12            #   "
+       STENCIL_SIZE                                    = 13            #   "
+       ACCUM_RED_SIZE                                  = 14            #   "
+       ACCUM_GREEN_SIZE                                = 15            #   "
+       ACCUM_BLUE_SIZE                                 = 16            #   "
+       ACCUM_ALPHA_SIZE                                = 17            #   "
+       CONFIG_CAVEAT                                   = 0x20          #   "
+       X_VISUAL_TYPE                                   = 0x22          #   "
+       TRANSPARENT_TYPE                                = 0x23          #   "
+       TRANSPARENT_INDEX_VALUE                         = 0x24          #   "
+       TRANSPARENT_RED_VALUE                           = 0x25          #   "
+       TRANSPARENT_GREEN_VALUE                         = 0x26          #   "
+       TRANSPARENT_BLUE_VALUE                          = 0x27          #   "
+       TRANSPARENT_ALPHA_VALUE                         = 0x28          #   "
+       DONT_CARE                                       = 0xFFFFFFFF    # may be specified for ChooseFBConfig attributes
+       NONE                                            = 0x8000        # several attribute values
+       SLOW_CONFIG                                     = 0x8001        # CONFIG_CAVEAT attribute value
+       TRUE_COLOR                                      = 0x8002        # X_VISUAL_TYPE attribute value
+       DIRECT_COLOR                                    = 0x8003        #   "
+       PSEUDO_COLOR                                    = 0x8004        #   "
+       STATIC_COLOR                                    = 0x8005        #   "
+       GRAY_SCALE                                      = 0x8006        #   "
+       STATIC_GRAY                                     = 0x8007        #   "
+       TRANSPARENT_RGB                                 = 0x8008        # TRANSPARENT_TYPE attribute value
+       TRANSPARENT_INDEX                               = 0x8009        #   "
+       VISUAL_ID                                       = 0x800B        # Context attribute
+       SCREEN                                          = 0x800C        #   "
+       NON_CONFORMANT_CONFIG                           = 0x800D        # CONFIG_CAVEAT attribute value
+       DRAWABLE_TYPE                                   = 0x8010        # FBConfig attribute
+       RENDER_TYPE                                     = 0x8011        #   "
+       X_RENDERABLE                                    = 0x8012        #   "
+       FBCONFIG_ID                                     = 0x8013        #   "
+       RGBA_TYPE                                       = 0x8014        # CreateNewContext render_type value
+       COLOR_INDEX_TYPE                                = 0x8015        #   "
+       MAX_PBUFFER_WIDTH                               = 0x8016        # FBConfig attribute
+       MAX_PBUFFER_HEIGHT                              = 0x8017        #   "
+       MAX_PBUFFER_PIXELS                              = 0x8018        #   "
+       PRESERVED_CONTENTS                              = 0x801B        # CreateGLXPbuffer attribute
+       LARGEST_PBUFFER                                 = 0x801C        #   "
+       WIDTH                                           = 0x801D        # Drawable attribute
+       HEIGHT                                          = 0x801E        #   "
+       EVENT_MASK                                      = 0x801F        #   "
+       DAMAGED                                         = 0x8020        # PbufferClobber event_type value
+       SAVED                                           = 0x8021        #   "
+       WINDOW                                          = 0x8022        # PbufferClobber draw_type value
+       PBUFFER                                         = 0x8023        #   "
+       PBUFFER_HEIGHT                                  = 0x8040        # CreateGLXPbuffer attribute
+       PBUFFER_WIDTH                                   = 0x8041        #   "
+       VISUAL_CAVEAT_EXT                               = 0x20          # Visual attribute
+       X_VISUAL_TYPE_EXT                               = 0x22          #   "
+       TRANSPARENT_TYPE_EXT                            = 0x23          #   "
+       TRANSPARENT_INDEX_VALUE_EXT                     = 0x24          #   "
+       TRANSPARENT_RED_VALUE_EXT                       = 0x25          #   "
+       TRANSPARENT_GREEN_VALUE_EXT                     = 0x26          #   "
+       TRANSPARENT_BLUE_VALUE_EXT                      = 0x27          #   "
+       TRANSPARENT_ALPHA_VALUE_EXT                     = 0x28          #   "
+       NONE_EXT                                        = 0x8000        # several EXT attribute values
+       SLOW_VISUAL_EXT                                 = 0x8001        # VISUAL_CAVEAT_EXT attribute value
+       TRUE_COLOR_EXT                                  = 0x8002        # X_VISUAL_TYPE_EXT attribute value
+       DIRECT_COLOR_EXT                                = 0x8003        #   "
+       PSEUDO_COLOR_EXT                                = 0x8004        #   "
+       STATIC_COLOR_EXT                                = 0x8005        #   "
+       GRAY_SCALE_EXT                                  = 0x8006        #   "
+       STATIC_GRAY_EXT                                 = 0x8007        #   "
+       TRANSPARENT_RGB_EXT                             = 0x8008        # TRANSPARENT_TYPE_EXT attribute value
+       TRANSPARENT_INDEX_EXT                           = 0x8009        #   "
+       SHARE_CONTEXT_EXT                               = 0x800A        # QueryContextInfoEXT attribute
+       VISUAL_ID_EXT                                   = 0x800B        #   "
+       SCREEN_EXT                                      = 0x800C        #   "
+       NON_CONFORMANT_VISUAL_EXT                       = 0x800D        # VISUAL_CAVEAT_EXT attribute value
+       DRAWABLE_TYPE_SGIX                              = 0x8010        # FBConfigSGIX attribute
+       RENDER_TYPE_SGIX                                = 0x8011        #   "
+       X_RENDERABLE_SGIX                               = 0x8012        #   "
+       FBCONFIG_ID_SGIX                                = 0x8013        #   "
+       RGBA_TYPE_SGIX                                  = 0x8014        # CreateContextWithConfigSGIX render_type value
+       COLOR_INDEX_TYPE_SGIX                           = 0x8015        #   "
+       MAX_PBUFFER_WIDTH_SGIX                          = 0x8016        # FBConfigSGIX attribute
+       MAX_PBUFFER_HEIGHT_SGIX                         = 0x8017        #   "
+       MAX_PBUFFER_PIXELS_SGIX                         = 0x8018        #   "
+       OPTIMAL_PBUFFER_WIDTH_SGIX                      = 0x8019        #   "
+       OPTIMAL_PBUFFER_HEIGHT_SGIX                     = 0x801A        #   "
+       PRESERVED_CONTENTS_SGIX                         = 0x801B        # PbufferSGIX attribute
+       LARGEST_PBUFFER_SGIX                            = 0x801C        #   "
+       WIDTH_SGIX                                      = 0x801D        #   "
+       HEIGHT_SGIX                                     = 0x801E        #   "
+       EVENT_MASK_SGIX                                 = 0x801F        #   "
+       DAMAGED_SGIX                                    = 0x8020        # BufferClobberSGIX event_type value
+       SAVED_SGIX                                      = 0x8021        #   "
+       WINDOW_SGIX                                     = 0x8022        # BufferClobberSGIX draw_type value
+       PBUFFER_SGIX                                    = 0x8023        #   "
+       DIGITAL_MEDIA_PBUFFER_SGIX                      = 0x8024        # PbufferSGIX attribute
+       BLENDED_RGBA_SGIS                               = 0x8025        # TRANSPARENT_TYPE_EXT attribute value
+       MULTISAMPLE_SUB_RECT_WIDTH_SGIS                 = 0x8026        # Visual attribute (shared_multisample)
+       MULTISAMPLE_SUB_RECT_HEIGHT_SGIS                = 0x8027        #   "
+       VISUAL_SELECT_GROUP_SGIX                        = 0x8028        # Visual attribute (visual_select_group)
+       HYPERPIPE_ID_SGIX                               = 0x8030        # Associated hyperpipe ID (SGIX_hyperpipe)
+       SAMPLE_BUFFERS_SGIS                             = 100000        # Visual attribute (SGIS_multisample)
+       SAMPLES_SGIS                                    = 100001        #   "
+       SAMPLE_BUFFERS_ARB                              = 100000        # Visual attribute (ARB_multisample - alias of SGIS_multisample)
+       SAMPLES_ARB                                     = 100001        #   "
+       SAMPLE_BUFFERS                                  = 100000        # Visual attribute (GLX 1.4 core - alias of SGIS_multisample)
+       SAMPLES                                         = 100001        #   "
+
+###############################################################################
+
+# ARB: 0x2070-0x209F (shared with WGL)
+
+# Also includes a bitmask - see ContextFlags above
+# ARB_create_context enum:
+       CONTEXT_MAJOR_VERSION_ARB                       = 0x2091
+       CONTEXT_MINOR_VERSION_ARB                       = 0x2092
+       CONTEXT_FLAGS_ARB                               = 0x2094
+
+###############################################################################
+
+# NVIDIA: 0x20A0 - 0x219F (shared with WGL)
+
+# NV_float_buffer enum:
+       FLOAT_COMPONENTS_NV                             = 0x20B0
+# EXT_fbconfig_packed_float enum:
+       RGBA_UNSIGNED_FLOAT_TYPE_EXT                    = 0x20B1
+# EXT_framebuffer_sRGB enum:
+       FRAMEBUFFER_SRGB_CAPABLE_EXT                    = 0x20B2
+
+# NV_future_use: 0x20B3-0x20B8
+
+# ARB_fbconfig_float enum:
+       RGBA_FLOAT_TYPE_ARB                             = 0x20B9
+
+# NV_future_use: 0x20BA-0x20C2
+
+# NV_video_out enum:
+       VIDEO_OUT_COLOR_NV                              = 0x20C3
+       VIDEO_OUT_ALPHA_NV                              = 0x20C4
+       VIDEO_OUT_DEPTH_NV                              = 0x20C5
+       VIDEO_OUT_COLOR_AND_ALPHA_NV                    = 0x20C6
+       VIDEO_OUT_COLOR_AND_DEPTH_NV                    = 0x20C7
+       VIDEO_OUT_FRAME_NV                              = 0x20C8
+       VIDEO_OUT_FIELD_1_NV                            = 0x20C9
+       VIDEO_OUT_FIELD_2_NV                            = 0x20CA
+       VIDEO_OUT_STACKED_FIELDS_1_2_NV                 = 0x20CB
+       VIDEO_OUT_STACKED_FIELDS_2_1_NV                 = 0x20CC
+
+# NV_video_capture enum:
+       DEVICE_ID_NV                                    = 0x20CD
+       UNIQUE_ID_NV                                    = 0x20CE
+       NUM_VIDEO_CAPTURE_SLOTS_NV                      = 0x20CF
+
+# EXT_texture_from_pixmap enum:
+       BIND_TO_TEXTURE_RGB_EXT                         = 0x20D0
+       BIND_TO_TEXTURE_RGBA_EXT                        = 0x20D1
+       BIND_TO_MIPMAP_TEXTURE_EXT                      = 0x20D2
+       BIND_TO_TEXTURE_TARGETS_EXT                     = 0x20D3
+       Y_INVERTED_EXT                                  = 0x20D4
+       TEXTURE_FORMAT_EXT                              = 0x20D5
+       TEXTURE_TARGET_EXT                              = 0x20D6
+       MIPMAP_TEXTURE_EXT                              = 0x20D7
+       TEXTURE_FORMAT_NONE_EXT                         = 0x20D8
+       TEXTURE_FORMAT_RGB_EXT                          = 0x20D9
+       TEXTURE_FORMAT_RGBA_EXT                         = 0x20DA
+       TEXTURE_1D_EXT                                  = 0x20DB
+       TEXTURE_2D_EXT                                  = 0x20DC
+       TEXTURE_RECTANGLE_EXT                           = 0x20DD
+       FRONT_LEFT_EXT                                  = 0x20DE
+       FRONT_RIGHT_EXT                                 = 0x20DF
+       BACK_LEFT_EXT                                   = 0x20E0
+       BACK_RIGHT_EXT                                  = 0x20E1
+       FRONT_EXT                                       = GLX_FRONT_LEFT_EXT
+       BACK_EXT                                        = GLX_BACK_LEFT_EXT
+       AUX0_EXT                                        = 0x20E2
+       AUX1_EXT                                        = 0x20E3
+       AUX2_EXT                                        = 0x20E4
+       AUX3_EXT                                        = 0x20E5
+       AUX4_EXT                                        = 0x20E6
+       AUX5_EXT                                        = 0x20E7
+       AUX6_EXT                                        = 0x20E8
+       AUX7_EXT                                        = 0x20E9
+       AUX8_EXT                                        = 0x20EA
+       AUX9_EXT                                        = 0x20EB
+
+# NV_future_use: 0x20EC-0x20EF
+
+NV_present_video enum:
+       NUM_VIDEO_SLOTS_NV                              = 0x20F0
+
+EXT_swap_control enum:
+       SWAP_INTERVAL_EXT                               = 0x20F1
+       MAX_SWAP_INTERVAL_EXT                           = 0x20F2
+
+# NV_future_use: 0x20F3-0x219F
+
+###############################################################################
+
+# MESA (not in a reserved block)
+
+# MESA_set_3dfx_mode enum:
+#      3DFX_WINDOW_MODE_MESA                           = 0x1
+#      3DFX_FULLSCREEN_MODE_MESA                       = 0x2
+
+###############################################################################
+
+# SGI_future_use: 0x8029-0x802F
+# SGIX_hyperpipe adds attribute name HYPERPIPE_ID_SGIX = 0x8030
+# SGI_future_use: 0x8031-0x803F
+
+###############################################################################
+
+# ARB_future_use: 0x8042-0x804F
+
+###############################################################################
+
+# 3DFX: 0x8050-0x805F
+
+# 3DFX_multisample enum:
+#      SAMPLE_BUFFERS_3DFX                             = 0x8050
+#      SAMPLES_3DFX                                    = 0x8051
+
+###############################################################################
+
+# OML: 0x8060-0x806F
+
+# OML_swap_method enum:
+#      SWAP_METHOD_OML                                 = 0x8060
+#      SWAP_EXCHANGE_OML                               = 0x8061
+#      SWAP_COPY_OML                                   = 0x8062
+#      SWAP_UNDEFINED_OML                              = 0x8063
+
+# OML_future_use: 0x8064-0x806F
+
+###############################################################################
+
+# NVIDIA: 0x8070 - 0x816F
+
+NVIDIA_future_use: 0x8070-0x816F
+
+###############################################################################
+
+# SUN: 0x8170 - 0x817F
+
+SUN_future_use: 0x8170-0x817F
+
+###############################################################################
+
+# INTEL: 0x8180 - 0x818F
+
+# INTEL_swap_event: 0x8180-0x8182
+#      EXCHANGE_COMPLETE_INTEL                         = 0x8180
+#      COPY_COMPLETE_INTEL                             = 0x8181
+#      FLIP_COMPLETE_INTEL                             = 0x8182
+
+INTEL_future_use: 0x8183-0x818F
+
+###############################################################################
+### Please remember that new GLX enum allocations must be obtained by request
+### to the Khronos API Registrar (see comments at the top of this file)
+### File requests in the Khronos Bugzilla, OpenGL project, Registry component.
+###############################################################################
+
+# Any_vendor_future_use: 0x8180-0x9125
+
+# Also includes a bitmask - see ContextProfileMask above
+# ARB_create_context_profile enum: (equivalent to corresponding GL token)
+       CONTEXT_PROFILE_MASK_ARB                        = 0x9126
+
+# Any_vendor_future_use: 0x9127-0xFFFF
+#
+#   This range must be the last range in the file.  To generate a new
+#   range, allocate multiples of 16 from the beginning of the
+#   Any_vendor_future_use range and update glxenum.spec, glxenumext.spec,
+#   and extensions.reserved.
diff --git a/src/glx/apple/specs/glxenumext.spec b/src/glx/apple/specs/glxenumext.spec
new file mode 100644 (file)
index 0000000..797e697
--- /dev/null
@@ -0,0 +1,515 @@
+# Copyright (c) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2006-2010 The Khronos Group, Inc.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+#
+# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
+
+# List of GLX enumerants for glxext.h header
+#
+# This is NOT the master GLX enumerant registry (glxenum.spec).
+#
+# Unlike glxenum.spec, glxenumext.spec is
+#   (1) In order by extension number.
+#   (2) Includes only GLX extensions and GLX 1.3/1.4 core enumerants,
+#      since it's assumed all <glx.h> today support at least GLX 1.2.
+#   (3) Has no 'Extensions' section, since enums are always
+#      conditionally protected against multiple definition
+#      by glextenum.pl.
+#   (4) Is processed by glextenum.pl, which has evolved
+#      from enum.pl - should merge back into one script.
+
+# glxext.h version number - this should be automatically updated,
+#   when changing either enum or template spec files.
+
+passthru:
+passthru: /* Header file version number, required by OpenGL ABI for Linux */
+passthru: /* glxext.h last updated 2010/02/10 */
+passthru: /* Current version at http://www.opengl.org/registry/ */
+passthru: #define GLX_GLXEXT_VERSION 27
+
+###############################################################################
+#
+# GLX 1.3 enums
+#
+###############################################################################
+
+VERSION_1_3 enum:
+       WINDOW_BIT                                      = 0x00000001    # DRAWABLE_TYPE value
+       PIXMAP_BIT                                      = 0x00000002    #   "
+       PBUFFER_BIT                                     = 0x00000004    #   "
+       RGBA_BIT                                        = 0x00000001    # RENDER_TYPE value
+       COLOR_INDEX_BIT                                 = 0x00000002    #   "
+       PBUFFER_CLOBBER_MASK                            = 0x08000000    # SelectEvent mask
+       FRONT_LEFT_BUFFER_BIT                           = 0x00000001    # PbufferClobberEvent mask
+       FRONT_RIGHT_BUFFER_BIT                          = 0x00000002    #   "
+       BACK_LEFT_BUFFER_BIT                            = 0x00000004    #   "
+       BACK_RIGHT_BUFFER_BIT                           = 0x00000008    #   "
+       AUX_BUFFERS_BIT                                 = 0x00000010    #   "
+       DEPTH_BUFFER_BIT                                = 0x00000020    #   "
+       STENCIL_BUFFER_BIT                              = 0x00000040    #   "
+       ACCUM_BUFFER_BIT                                = 0x00000080    #   "
+       CONFIG_CAVEAT                                   = 0x20          #   "
+       X_VISUAL_TYPE                                   = 0x22          #   "
+       TRANSPARENT_TYPE                                = 0x23          #   "
+       TRANSPARENT_INDEX_VALUE                         = 0x24          #   "
+       TRANSPARENT_RED_VALUE                           = 0x25          #   "
+       TRANSPARENT_GREEN_VALUE                         = 0x26          #   "
+       TRANSPARENT_BLUE_VALUE                          = 0x27          #   "
+       TRANSPARENT_ALPHA_VALUE                         = 0x28          #   "
+       DONT_CARE                                       = 0xFFFFFFFF    # may be specified for ChooseFBConfig attributes
+       NONE                                            = 0x8000        # several attribute values
+       SLOW_CONFIG                                     = 0x8001        # CONFIG_CAVEAT attribute value
+       TRUE_COLOR                                      = 0x8002        # X_VISUAL_TYPE attribute value
+       DIRECT_COLOR                                    = 0x8003        #   "
+       PSEUDO_COLOR                                    = 0x8004        #   "
+       STATIC_COLOR                                    = 0x8005        #   "
+       GRAY_SCALE                                      = 0x8006        #   "
+       STATIC_GRAY                                     = 0x8007        #   "
+       TRANSPARENT_RGB                                 = 0x8008        # TRANSPARENT_TYPE attribute value
+       TRANSPARENT_INDEX                               = 0x8009        #   "
+       VISUAL_ID                                       = 0x800B        # Context attribute
+       SCREEN                                          = 0x800C        #   "
+       NON_CONFORMANT_CONFIG                           = 0x800D        # CONFIG_CAVEAT attribute value
+       DRAWABLE_TYPE                                   = 0x8010        # FBConfig attribute
+       RENDER_TYPE                                     = 0x8011        #   "
+       X_RENDERABLE                                    = 0x8012        #   "
+       FBCONFIG_ID                                     = 0x8013        #   "
+       RGBA_TYPE                                       = 0x8014        # CreateNewContext render_type value
+       COLOR_INDEX_TYPE                                = 0x8015        #   "
+       MAX_PBUFFER_WIDTH                               = 0x8016        # FBConfig attribute
+       MAX_PBUFFER_HEIGHT                              = 0x8017        #   "
+       MAX_PBUFFER_PIXELS                              = 0x8018        #   "
+       PRESERVED_CONTENTS                              = 0x801B        # CreateGLXPbuffer attribute
+       LARGEST_PBUFFER                                 = 0x801C        #   "
+       WIDTH                                           = 0x801D        # Drawable attribute
+       HEIGHT                                          = 0x801E        #   "
+       EVENT_MASK                                      = 0x801F        #   "
+       DAMAGED                                         = 0x8020        # PbufferClobber event_type value
+       SAVED                                           = 0x8021        #   "
+       WINDOW                                          = 0x8022        # PbufferClobber draw_type value
+       PBUFFER                                         = 0x8023        #   "
+       PBUFFER_HEIGHT                                  = 0x8040        # CreateGLXPbuffer attribute
+       PBUFFER_WIDTH                                   = 0x8041        #   "
+
+###############################################################################
+#
+# GLX 1.4 enums
+#
+###############################################################################
+
+VERSION_1_4 enum:
+       SAMPLE_BUFFERS                                  = 100000
+       SAMPLES                                         = 100001
+
+###############################################################################
+#
+# ARB GLX extensions, in ARB extension order
+#
+###############################################################################
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #2
+ARB_get_proc_address enum:
+
+###############################################################################
+
+# ARB Extension #5
+ARB_multisample enum:
+       SAMPLE_BUFFERS_ARB                              = 100000
+       SAMPLES_ARB                                     = 100001
+
+###############################################################################
+
+# ARB Extension #39
+ARB_fbconfig_float enum:
+       RGBA_FLOAT_TYPE_ARB                             = 0x20B9
+       RGBA_FLOAT_BIT_ARB                              = 0x00000004
+
+###############################################################################
+
+# ARB Extension #56
+ARB_create_context enum:
+       CONTEXT_DEBUG_BIT_ARB                           = 0x00000001
+       CONTEXT_FORWARD_COMPATIBLE_BIT_ARB              = 0x00000002
+       CONTEXT_MAJOR_VERSION_ARB                       = 0x2091
+       CONTEXT_MINOR_VERSION_ARB                       = 0x2092
+       CONTEXT_FLAGS_ARB                               = 0x2094
+
+###############################################################################
+
+# ARB Extension #75
+ARB_create_context_profile enum:
+       CONTEXT_CORE_PROFILE_BIT_ARB                    = 0x00000001
+       CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB           = 0x00000002
+       CONTEXT_PROFILE_MASK_ARB                        = 0x9126
+
+
+###############################################################################
+#
+# non-ARB GLX extensions, in registry order
+#
+###############################################################################
+
+###############################################################################
+
+# Unfortunately, the SGIS_multisample specification and the IRIX
+#  implementation are inconsistent; the spec assigns enums as follows.
+#  ARB_multisample reuses these enums with ARB suffixes, and it can't
+#  be changed at this point. So in the interest of supporting both
+#  extensions on non-IRIX platforms, the SGIS enums will be defined
+#  here as originally specified.
+
+# Extension #25
+SGIS_multisample enum:
+       SAMPLE_BUFFERS_SGIS                             = 100000
+       SAMPLES_SGIS                                    = 100001
+
+###############################################################################
+
+# Extension #28
+EXT_visual_info enum:
+       X_VISUAL_TYPE_EXT                               = 0x22
+       TRANSPARENT_TYPE_EXT                            = 0x23
+       TRANSPARENT_INDEX_VALUE_EXT                     = 0x24
+       TRANSPARENT_RED_VALUE_EXT                       = 0x25
+       TRANSPARENT_GREEN_VALUE_EXT                     = 0x26
+       TRANSPARENT_BLUE_VALUE_EXT                      = 0x27
+       TRANSPARENT_ALPHA_VALUE_EXT                     = 0x28
+       NONE_EXT                                        = 0x8000
+       TRUE_COLOR_EXT                                  = 0x8002
+       DIRECT_COLOR_EXT                                = 0x8003
+       PSEUDO_COLOR_EXT                                = 0x8004
+       STATIC_COLOR_EXT                                = 0x8005
+       GRAY_SCALE_EXT                                  = 0x8006
+       STATIC_GRAY_EXT                                 = 0x8007
+       TRANSPARENT_RGB_EXT                             = 0x8008
+       TRANSPARENT_INDEX_EXT                           = 0x8009
+
+###############################################################################
+
+# No new tokens
+# Extension #40
+SGI_swap_control enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #41
+SGI_video_sync enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #42
+SGI_make_current_read enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #43
+SGIX_video_source enum:
+
+###############################################################################
+
+# Extension #44
+EXT_visual_rating enum:
+       VISUAL_CAVEAT_EXT                               = 0x20
+       SLOW_VISUAL_EXT                                 = 0x8001
+       NON_CONFORMANT_VISUAL_EXT                       = 0x800D
+       use EXT_visual_info NONE_EXT
+
+###############################################################################
+
+# Extension #47
+EXT_import_context enum:
+       SHARE_CONTEXT_EXT                               = 0x800A
+       VISUAL_ID_EXT                                   = 0x800B
+       SCREEN_EXT                                      = 0x800C
+
+###############################################################################
+
+# Extension #49
+SGIX_fbconfig enum:
+       WINDOW_BIT_SGIX                                 = 0x00000001
+       PIXMAP_BIT_SGIX                                 = 0x00000002
+       RGBA_BIT_SGIX                                   = 0x00000001
+       COLOR_INDEX_BIT_SGIX                            = 0x00000002
+       DRAWABLE_TYPE_SGIX                              = 0x8010
+       RENDER_TYPE_SGIX                                = 0x8011
+       X_RENDERABLE_SGIX                               = 0x8012
+       FBCONFIG_ID_SGIX                                = 0x8013
+       RGBA_TYPE_SGIX                                  = 0x8014
+       COLOR_INDEX_TYPE_SGIX                           = 0x8015
+       use EXT_import_context SCREEN_EXT
+
+###############################################################################
+
+# Extension #50
+SGIX_pbuffer enum:
+       PBUFFER_BIT_SGIX                                = 0x00000004
+       BUFFER_CLOBBER_MASK_SGIX                        = 0x08000000
+       FRONT_LEFT_BUFFER_BIT_SGIX                      = 0x00000001
+       FRONT_RIGHT_BUFFER_BIT_SGIX                     = 0x00000002
+       BACK_LEFT_BUFFER_BIT_SGIX                       = 0x00000004
+       BACK_RIGHT_BUFFER_BIT_SGIX                      = 0x00000008
+       AUX_BUFFERS_BIT_SGIX                            = 0x00000010
+       DEPTH_BUFFER_BIT_SGIX                           = 0x00000020
+       STENCIL_BUFFER_BIT_SGIX                         = 0x00000040
+       ACCUM_BUFFER_BIT_SGIX                           = 0x00000080
+       SAMPLE_BUFFERS_BIT_SGIX                         = 0x00000100
+       MAX_PBUFFER_WIDTH_SGIX                          = 0x8016
+       MAX_PBUFFER_HEIGHT_SGIX                         = 0x8017
+       MAX_PBUFFER_PIXELS_SGIX                         = 0x8018
+       OPTIMAL_PBUFFER_WIDTH_SGIX                      = 0x8019
+       OPTIMAL_PBUFFER_HEIGHT_SGIX                     = 0x801A
+       PRESERVED_CONTENTS_SGIX                         = 0x801B
+       LARGEST_PBUFFER_SGIX                            = 0x801C
+       WIDTH_SGIX                                      = 0x801D
+       HEIGHT_SGIX                                     = 0x801E
+       EVENT_MASK_SGIX                                 = 0x801F
+       DAMAGED_SGIX                                    = 0x8020
+       SAVED_SGIX                                      = 0x8021
+       WINDOW_SGIX                                     = 0x8022
+       PBUFFER_SGIX                                    = 0x8023
+
+###############################################################################
+
+# Extension #62
+SGI_cushion enum:
+#       CUSHION_BUFFERS_SGI     ????
+
+###############################################################################
+
+# Extension #83
+SGIX_video_resize enum:
+       SYNC_FRAME_SGIX                                 = 0x00000000
+       SYNC_SWAP_SGIX                                  = 0x00000001
+
+###############################################################################
+
+# Extension #86
+SGIX_dmbuffer enum:
+       DIGITAL_MEDIA_PBUFFER_SGIX                      = 0x8024
+
+###############################################################################
+
+# No new tokens
+# Extension #91
+SGIX_swap_group enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #92
+SGIX_swap_barrier enum:
+
+###############################################################################
+
+# Extension #142
+SGIS_blended_overlay enum:
+       BLENDED_RGBA_SGIS                               = 0x8025
+
+###############################################################################
+
+# Extension #143
+SGIS_shared_multisample enum:
+       MULTISAMPLE_SUB_RECT_WIDTH_SGIS                 = 0x8026
+       MULTISAMPLE_SUB_RECT_HEIGHT_SGIS                = 0x8027
+
+###############################################################################
+
+# No new tokens
+# Extension #183
+SUN_get_transparent_index enum:
+
+###############################################################################
+
+# Extension #207
+3DFX_multisample enum:
+       SAMPLE_BUFFERS_3DFX                             = 0x8050
+       SAMPLES_3DFX                                    = 0x8051
+
+###############################################################################
+
+# No new tokens
+# Extension #215
+MESA_copy_sub_buffer enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #216
+MESA_pixmap_colormap enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #217
+MESA_release_buffers enum:
+
+###############################################################################
+
+# Extension #218
+MESA_set_3dfx_mode enum:
+       3DFX_WINDOW_MODE_MESA                           = 0x1
+       3DFX_FULLSCREEN_MODE_MESA                       = 0x2
+
+###############################################################################
+
+# Extension #234
+SGIX_visual_select_group enum:
+       VISUAL_SELECT_GROUP_SGIX                        = 0x8028
+
+###############################################################################
+
+# Extension #237
+OML_swap_method enum:
+       SWAP_METHOD_OML                                 = 0x8060
+       SWAP_EXCHANGE_OML                               = 0x8061
+       SWAP_COPY_OML                                   = 0x8062
+       SWAP_UNDEFINED_OML                              = 0x8063
+
+###############################################################################
+
+# No new tokens
+# Extension #238
+OML_sync_control enum:
+
+###############################################################################
+
+# Extension #281
+NV_float_buffer enum:
+       FLOAT_COMPONENTS_NV                             = 0x20B0
+
+###############################################################################
+
+# Extension #307
+SGIX_hyperpipe enum:
+       HYPERPIPE_PIPE_NAME_LENGTH_SGIX                 = 80
+       BAD_HYPERPIPE_CONFIG_SGIX                       = 91
+       BAD_HYPERPIPE_SGIX                              = 92
+       HYPERPIPE_DISPLAY_PIPE_SGIX                     = 0x00000001
+       HYPERPIPE_RENDER_PIPE_SGIX                      = 0x00000002
+       PIPE_RECT_SGIX                                  = 0x00000001
+       PIPE_RECT_LIMITS_SGIX                           = 0x00000002
+       HYPERPIPE_STEREO_SGIX                           = 0x00000003
+       HYPERPIPE_PIXEL_AVERAGE_SGIX                    = 0x00000004
+       HYPERPIPE_ID_SGIX                               = 0x8030
+
+###############################################################################
+
+# No new tokens
+# Extension #308
+MESA_agp_offset enum:
+
+###############################################################################
+
+# Extension #328
+EXT_fbconfig_packed_float enum:
+       RGBA_UNSIGNED_FLOAT_TYPE_EXT                    = 0x20B1
+       RGBA_UNSIGNED_FLOAT_BIT_EXT                     = 0x00000008
+
+###############################################################################
+
+# Extension #337
+EXT_framebuffer_sRGB enum:
+       FRAMEBUFFER_SRGB_CAPABLE_EXT                    = 0x20B2
+
+###############################################################################
+
+# Extension #344
+EXT_texture_from_pixmap enum:
+       TEXTURE_1D_BIT_EXT                              = 0x00000001
+       TEXTURE_2D_BIT_EXT                              = 0x00000002
+       TEXTURE_RECTANGLE_BIT_EXT                       = 0x00000004
+       BIND_TO_TEXTURE_RGB_EXT                         = 0x20D0
+       BIND_TO_TEXTURE_RGBA_EXT                        = 0x20D1
+       BIND_TO_MIPMAP_TEXTURE_EXT                      = 0x20D2
+       BIND_TO_TEXTURE_TARGETS_EXT                     = 0x20D3
+       Y_INVERTED_EXT                                  = 0x20D4
+       TEXTURE_FORMAT_EXT                              = 0x20D5
+       TEXTURE_TARGET_EXT                              = 0x20D6
+       MIPMAP_TEXTURE_EXT                              = 0x20D7
+       TEXTURE_FORMAT_NONE_EXT                         = 0x20D8
+       TEXTURE_FORMAT_RGB_EXT                          = 0x20D9
+       TEXTURE_FORMAT_RGBA_EXT                         = 0x20DA
+       TEXTURE_1D_EXT                                  = 0x20DB
+       TEXTURE_2D_EXT                                  = 0x20DC
+       TEXTURE_RECTANGLE_EXT                           = 0x20DD
+       FRONT_LEFT_EXT                                  = 0x20DE
+       FRONT_RIGHT_EXT                                 = 0x20DF
+       BACK_LEFT_EXT                                   = 0x20E0
+       BACK_RIGHT_EXT                                  = 0x20E1
+       FRONT_EXT                                       = GLX_FRONT_LEFT_EXT
+       BACK_EXT                                        = GLX_BACK_LEFT_EXT
+       AUX0_EXT                                        = 0x20E2
+       AUX1_EXT                                        = 0x20E3
+       AUX2_EXT                                        = 0x20E4
+       AUX3_EXT                                        = 0x20E5
+       AUX4_EXT                                        = 0x20E6
+       AUX5_EXT                                        = 0x20E7
+       AUX6_EXT                                        = 0x20E8
+       AUX7_EXT                                        = 0x20E9
+       AUX8_EXT                                        = 0x20EA
+       AUX9_EXT                                        = 0x20EB
+
+###############################################################################
+
+# Extension #347
+NV_present_video enum:
+       NUM_VIDEO_SLOTS_NV                              = 0x20F0
+
+###############################################################################
+
+# Extension #348
+NV_video_out enum:
+       VIDEO_OUT_COLOR_NV                              = 0x20C3
+       VIDEO_OUT_ALPHA_NV                              = 0x20C4
+       VIDEO_OUT_DEPTH_NV                              = 0x20C5
+       VIDEO_OUT_COLOR_AND_ALPHA_NV                    = 0x20C6
+       VIDEO_OUT_COLOR_AND_DEPTH_NV                    = 0x20C7
+       VIDEO_OUT_FRAME_NV                              = 0x20C8
+       VIDEO_OUT_FIELD_1_NV                            = 0x20C9
+       VIDEO_OUT_FIELD_2_NV                            = 0x20CA
+       VIDEO_OUT_STACKED_FIELDS_1_2_NV                 = 0x20CB
+       VIDEO_OUT_STACKED_FIELDS_2_1_NV                 = 0x20CC
+
+###############################################################################
+
+# No new tokens
+# Extension #350
+NV_swap_group enum:
+
+###############################################################################
+
+# Extension #374
+NV_video_capture enum:
+       DEVICE_ID_NV                                    = 0x20CD
+       UNIQUE_ID_NV                                    = 0x20CE
+       NUM_VIDEO_CAPTURE_SLOTS_NV                      = 0x20CF
+
+###############################################################################
+
+# Extension #375
+EXT_swap_control enum:
+       SWAP_INTERVAL_EXT                               = 0x20F1
+       MAX_SWAP_INTERVAL_EXT                           = 0x20F2
+
+###############################################################################
+
+# No new tokens
+# Extension #376
+NV_copy_image enum:
+
+###############################################################################
+
+# Extension #384
+INTEL_swap_event enum:
+       BUFFER_SWAP_COMPLETE_INTEL_MASK                 = 0x04000000
+       EXCHANGE_COMPLETE_INTEL                         = 0x8180
+       COPY_COMPLETE_INTEL                             = 0x8181
+       FLIP_COMPLETE_INTEL                             = 0x8182
diff --git a/src/glx/apple/specs/glxext.spec b/src/glx/apple/specs/glxext.spec
new file mode 100644 (file)
index 0000000..c25b7e6
--- /dev/null
@@ -0,0 +1,1330 @@
+# glxext.spec file
+# DON'T REMOVE PREVIOUS LINE!!! libspec depends on it!
+#
+# Copyright (c) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2006-2010 The Khronos Group, Inc.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+#
+# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
+
+required-props:
+param:         retval retained
+glxflags:      client-handcode client-intercept server-handcode
+glxvendorglx:  *
+vectorequiv:   *
+category:      VERSION_1_3 VERSION_1_4 ARB_get_proc_address ARB_multisample ARB_fbconfig_float EXT_import_context SGIX_dmbuffer SGIX_fbconfig SGIX_pbuffer SGIX_swap_barrier SGIX_swap_group SGIX_video_resize SGIX_video_source SGI_cushion SGI_make_current_read SGI_swap_control SGI_video_sync SUN_get_transparent_index MESA_agp_offset MESA_copy_sub_buffer MESA_pixmap_colormap MESA_release_buffers MESA_set_3dfx_mode SGIX_visual_select_group OML_sync_control SGIX_hyperpipe EXT_texture_from_pixmap NV_swap_group NV_video_output NV_present_video ARB_create_context NV_video_capture NV_copy_image EXT_swap_control
+glxopcode:     *
+
+#
+# Boilerplate to define types used by some extensions. This is done
+#   up front, since it involves some complexities in protecting
+#   the declarations whether or not the -protect flag is given to
+#   the generator scripts.
+#
+
+passthru: #ifndef GLX_ARB_get_proc_address
+passthru: typedef void (*__GLXextFuncPtr)(void);
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_SGIX_video_source
+passthru: typedef XID GLXVideoSourceSGIX;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_SGIX_fbconfig
+passthru: typedef XID GLXFBConfigIDSGIX;
+passthru: typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_SGIX_pbuffer
+passthru: typedef XID GLXPbufferSGIX;
+passthru: typedef struct {
+passthru:     int type;
+passthru:     unsigned long serial;      /* # of last request processed by server */
+passthru:     Bool send_event;           /* true if this came for SendEvent request */
+passthru:     Display *display;                  /* display the event was read from */
+passthru:     GLXDrawable drawable;      /* i.d. of Drawable */
+passthru:     int event_type;            /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
+passthru:     int draw_type;             /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
+passthru:     unsigned int mask;         /* mask indicating which buffers are affected*/
+passthru:     int x, y;
+passthru:     int width, height;
+passthru:     int count;                 /* if nonzero, at least this many more */
+passthru: } GLXBufferClobberEventSGIX;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_NV_video_output
+passthru: typedef unsigned int GLXVideoDeviceNV;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_NV_video_capture
+passthru: typedef XID GLXVideoCaptureDeviceNV;
+passthru: #endif
+passthru:
+passthru: #ifndef GLEXT_64_TYPES_DEFINED
+passthru: /* This code block is duplicated in glext.h, so must be protected */
+passthru: #define GLEXT_64_TYPES_DEFINED
+passthru: /* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+passthru: /* (as used in the GLX_OML_sync_control extension). */
+passthru: #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+passthru: #include <inttypes.h>
+passthru: #elif defined(__sun__) || defined(__digital__)
+passthru: #include <inttypes.h>
+passthru: #if defined(__STDC__)
+passthru: #if defined(__arch64__) || defined(_LP64)
+passthru: typedef long int int64_t;
+passthru: typedef unsigned long int uint64_t;
+passthru: #else
+passthru: typedef long long int int64_t;
+passthru: typedef unsigned long long int uint64_t;
+passthru: #endif /* __arch64__ */
+passthru: #endif /* __STDC__ */
+passthru: #elif defined( __VMS ) || defined(__sgi)
+passthru: #include <inttypes.h>
+passthru: #elif defined(__SCO__) || defined(__USLC__)
+passthru: #include <stdint.h>
+passthru: #elif defined(__UNIXOS2__) || defined(__SOL64__)
+passthru: typedef long int int32_t;
+passthru: typedef long long int int64_t;
+passthru: typedef unsigned long long int uint64_t;
+passthru: #elif defined(_WIN32) && defined(__GNUC__)
+passthru: #include <stdint.h>
+passthru: #elif defined(_WIN32)
+passthru: typedef __int32 int32_t;
+passthru: typedef __int64 int64_t;
+passthru: typedef unsigned __int64 uint64_t;
+passthru: #else
+passthru: #include <inttypes.h>     /* Fallback option */
+passthru: #endif
+passthru: #endif
+passthru:
+
+###############################################################################
+#
+# GLX 1.3 commands
+#
+###############################################################################
+
+GetFBConfigs(dpy, screen, nelements)
+       return          GLXFBConfigPointer
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           nelements       int out reference
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       21
+
+ChooseFBConfig(dpy, screen, attrib_list, nelements)
+       return          GLXFBConfigPointer
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           attrib_list     int in reference
+       param           nelements       int out reference
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+GetFBConfigAttrib(dpy, config, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           attribute       int in value
+       param           value           int out reference
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+GetVisualFromFBConfig(dpy, config)
+       return          XVisualInfoPointer
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+CreateWindow(dpy, config, win, attrib_list)
+       return          GLXWindow
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           win             Window in value
+       param           attrib_list     int in reference
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       31
+
+DestroyWindow(dpy, win)
+       return          void
+       param           dpy             Display out reference
+       param           win             GLXWindow in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       32
+
+CreatePixmap(dpy, config, pixmap, attrib_list)
+       return          GLXPixmap
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           pixmap          Pixmap in value
+       param           attrib_list     int in reference
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       22
+
+DestroyPixmap(dpy, pixmap)
+       return          void
+       param           dpy             Display out reference
+       param           pixmap          GLXPixmap in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       23
+
+CreatePbuffer(dpy, config, attrib_list)
+       return          GLXPbuffer
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           attrib_list     int in reference
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       27
+
+DestroyPbuffer(dpy, pbuf)
+       return          void
+       param           dpy             Display out reference
+       param           pbuf            GLXPbuffer in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       28
+
+# glXGetDrawableAttributes -> GLX opcode 29
+# glXChangeDrawableAttributes -> GLX opcode 30
+
+# Uses glXGetDrawableAttributes protocol
+QueryDrawable(dpy, draw, attribute, value)
+       return          void
+       param           dpy             Display out reference
+       param           draw            GLXDrawable in value
+       param           attribute       int in value
+       param           value           uint out reference
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+CreateNewContext(dpy, config, render_type, share_list, direct)
+       return          GLXContext
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           render_type     int in value
+       param           share_list      GLXContext in value
+       param           direct          Bool in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       24
+
+MakeContextCurrent(dpy, draw, read, ctx)
+       return          Bool
+       param           dpy             Display out reference
+       param           draw            GLXDrawable in value
+       param           read            GLXDrawable in value
+       param           ctx             GLXContext in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       26
+
+GetCurrentReadDrawable()
+       return          GLXDrawable
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+GetCurrentDisplay()
+       return          DisplayPointer
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+QueryContext(dpy, ctx, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           ctx             GLXContext in value
+       param           attribute       int in value
+       param           value           int out reference
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+       glxopcode       25
+
+# Uses glXChangeDrawableAttributes protocol
+SelectEvent(dpy, draw, event_mask)
+       return          void
+       param           dpy             Display out reference
+       param           draw            GLXDrawable in value
+       param           event_mask      ulong in value
+       category        VERSION_1_3
+       glxflags        client-handcode server-handcode
+
+# Uses glXGetDrawableAttributes protocol
+GetSelectedEvent(dpy, draw, event_mask)
+       return          void
+       param           dpy             Display out reference
+       param           draw            GLXDrawable in value
+       param           event_mask      ulong out reference
+       category        VERSION_1_3
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# GLX 1.4 commands
+#
+###############################################################################
+
+GetProcAddress(procName)
+       return          FunctionPointer
+       param           procName        GLubyte in reference
+       category        VERSION_1_4
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# ARB Extension #2
+# ARB_get_proc_address commands
+# @promoted to core in GLX 1.4, but there's no provision for aliasing
+# @in GLX spec files, yet
+#
+###############################################################################
+
+GetProcAddressARB(procName)
+       return          FunctionPointer
+       param           procName        GLubyte in reference
+       category        ARB_get_proc_address
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# ARB Extension #5
+# ARB_multisample commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_multisample
+
+###############################################################################
+#
+# ARB Extension #39
+# ARB_fbconfig_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_fbconfig_float
+
+###############################################################################
+#
+# ARB Extension #56
+# ARB_create_context commands
+#
+###############################################################################
+
+CreateContextAttribsARB(dpy, config, share_context, direct, attrib_list)
+       return          GLXContext
+       param           dpy             Display out reference
+       param           config          GLXFBConfig in value
+       param           share_context   GLXContext in value
+       param           direct          Bool in value
+       param           attrib_list     int in reference
+       category        ARB_create_context
+       glxflags        client-handcode client-intercept server-handcode
+       glxopcode       34
+
+###############################################################################
+#
+# ARB Extension #75
+# ARB_create_context_profile commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_create_context_profile
+
+
+###############################################################################
+#
+# Extension #25
+# SGIS_multisample commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_multisample
+
+###############################################################################
+#
+# Extension #28
+# EXT_visual_info commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_visual_info
+
+###############################################################################
+#
+# Extension #40
+# SGI_swap_control commands
+#
+###############################################################################
+
+SwapIntervalSGI(interval)
+       return          int
+       param           interval        int in value
+       category        SGI_swap_control
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65536
+
+###############################################################################
+#
+# Extension #41
+# SGI_video_sync commands
+#
+###############################################################################
+
+GetVideoSyncSGI(count)
+       return          int
+       param           count           uint out reference
+       category        SGI_video_sync
+       glxflags        client-handcode client-intercept server-handcode
+
+WaitVideoSyncSGI(divisor, remainder, count)
+       return          int
+       param           divisor         int in value
+       param           remainder       int in value
+       param           count           uint out reference
+       category        SGI_video_sync
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #42
+# SGI_make_current_read commands
+#
+###############################################################################
+
+MakeCurrentReadSGI(dpy, draw, read, ctx)
+       return          Bool
+       param           dpy             Display out reference
+       param           draw            GLXDrawable in value
+       param           read            GLXDrawable in value
+       param           ctx             GLXContext in value
+       category        SGI_make_current_read
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65537
+
+GetCurrentReadDrawableSGI()
+       return          GLXDrawable
+       category        SGI_make_current_read
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #43
+# SGIX_video_source commands
+#
+###############################################################################
+
+newcategory: SGIX_video_source
+passthru: #ifdef _VL_H
+
+CreateGLXVideoSourceSGIX(display, screen, server, path, nodeClass, drainNode)
+       return          GLXVideoSourceSGIX
+       param           display         Display out reference
+       param           screen          int in value
+       param           server          VLServer in value
+       param           path            VLPath in value
+       param           nodeClass       int in value
+       param           drainNode       VLNode in value
+       category        SGIX_video_source
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65538
+
+DestroyGLXVideoSourceSGIX(dpy, glxvideosource)
+       return          void
+       param           dpy             Display out reference
+       param           glxvideosource  GLXVideoSourceSGIX in value
+       category        SGIX_video_source
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65539
+
+passend: #endif /* _VL_H */
+endcategory:
+
+###############################################################################
+#
+# Extension #44
+# EXT_visual_rating commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_visual_rating
+
+###############################################################################
+#
+# Extension #47
+# EXT_import_context commands
+#
+###############################################################################
+
+GetCurrentDisplayEXT()
+       return          DisplayPointer
+       category        EXT_import_context
+       glxflags        client-handcode client-intercept server-handcode
+
+QueryContextInfoEXT(dpy, context, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           context         GLXContext in value
+       param           attribute       int in value
+       param           value           int out reference
+       category        EXT_import_context
+       glxflags        client-handcode server-handcode
+       glxvendorglx    1024
+
+# 'constGLXContext' is a hack; the extension specification and glx.h
+# should be fixed instead.
+GetContextIDEXT(context)
+       return          GLXContextID
+       param           context         constGLXContext in value
+       category        EXT_import_context
+       glxflags        client-handcode client-intercept server-handcode
+
+ImportContextEXT(dpy, contextID)
+       return          GLXContext
+       param           dpy             Display out reference
+       param           contextID       GLXContextID in value
+       category        EXT_import_context
+       glxflags        client-handcode client-intercept server-handcode
+
+FreeContextEXT(dpy, context)
+       return          void
+       param           dpy             Display out reference
+       param           context         GLXContext in value
+       category        EXT_import_context
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #49
+# SGIX_fbconfig commands
+#
+###############################################################################
+
+# GetFBConfigsSGIX protocol -> VendorPrivate opcode 65540
+
+GetFBConfigAttribSGIX(dpy, config, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           config          GLXFBConfigSGIX in value
+       param           attribute       int in value
+       param           value           int out reference
+       category        SGIX_fbconfig
+       glxflags        client-handcode client-intercept server-handcode
+
+ChooseFBConfigSGIX(dpy, screen, attrib_list, nelements)
+       return          GLXFBConfigSGIXPointer
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           attrib_list     int out reference
+       param           nelements       int out reference
+       category        SGIX_fbconfig
+       glxflags        client-handcode client-intercept server-handcode
+
+CreateGLXPixmapWithConfigSGIX(dpy, config, pixmap)
+       return          GLXPixmap
+       param           dpy             Display out reference
+       param           config          GLXFBConfigSGIX in value
+       param           pixmap          Pixmap in value
+       category        SGIX_fbconfig
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65542
+
+CreateContextWithConfigSGIX(dpy, config, render_type, share_list, direct)
+       return          GLXContext
+       param           dpy             Display out reference
+       param           config          GLXFBConfigSGIX in value
+       param           render_type     int in value
+       param           share_list      GLXContext in value
+       param           direct          Bool in value
+       category        SGIX_fbconfig
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65541
+
+GetVisualFromFBConfigSGIX(dpy, config)
+       return          XVisualInfoPointer
+       param           dpy             Display out reference
+       param           config          GLXFBConfigSGIX in value
+       category        SGIX_fbconfig
+       glxflags        client-handcode client-intercept server-handcode
+
+GetFBConfigFromVisualSGIX(dpy, vis)
+       return          GLXFBConfigSGIX
+       param           dpy             Display out reference
+       param           vis             XVisualInfo out reference
+       category        SGIX_fbconfig
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #50
+# SGIX_pbuffer commands
+#
+###############################################################################
+
+# ChangeDrawableAttributesSGIX protocol -> VendorPrivate opcode 65545
+# GetDrawableAttributesSGIX protocol -> VendorPrivate opcode 65546
+
+CreateGLXPbufferSGIX(dpy, config, width,  height, attrib_list)
+       return          GLXPbufferSGIX
+       param           dpy             Display out reference
+       param           config          GLXFBConfigSGIX in value
+       param           width           uint in value
+       param           height          uint in value
+       param           attrib_list     int out reference
+       category        SGIX_pbuffer
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65543
+
+DestroyGLXPbufferSGIX(dpy, pbuf)
+       return          void
+       param           dpy             Display out reference
+       param           pbuf            GLXPbufferSGIX in value
+       category        SGIX_pbuffer
+       glxflags        client-handcode
+       glxvendorglx    65544
+
+QueryGLXPbufferSGIX(dpy, pbuf, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           pbuf            GLXPbufferSGIX in value
+       param           attribute       int in value
+       param           value           uint out reference
+       category        SGIX_pbuffer
+
+SelectEventSGIX(dpy, drawable, mask)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           mask            ulong in value
+       category        SGIX_pbuffer
+
+GetSelectedEventSGIX(dpy, drawable, mask)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           mask            ulong out reference
+       category        SGIX_pbuffer
+
+###############################################################################
+#
+# Extension #62
+# SGI_cushion commands
+#
+###############################################################################
+
+CushionSGI(dpy, window, cushion)
+       return          void
+       param           dpy             Display out reference
+       param           window          Window in value
+       param           cushion         float in value
+       category        SGI_cushion
+
+###############################################################################
+#
+# Extension #83
+# SGIX_video_resize commands
+#
+###############################################################################
+
+BindChannelToWindowSGIX(display, screen, channel, window)
+       return          int
+       param           display         Display out reference
+       param           screen          int in value
+       param           channel         int in value
+       param           window          Window in value
+       category        SGIX_video_resize
+
+ChannelRectSGIX(display, screen, channel, x, y, w, h)
+       return          int
+       param           display         Display out reference
+       param           screen          int in value
+       param           channel         int in value
+       param           x               int in value
+       param           y               int in value
+       param           w               int in value
+       param           h               int in value
+       category        SGIX_video_resize
+
+QueryChannelRectSGIX(display, screen, channel, dx, dy, dw, dh)
+       return          int
+       param           display         Display out reference
+       param           screen          int in value
+       param           channel         int in value
+       param           dx              int out reference
+       param           dy              int out reference
+       param           dw              int out reference
+       param           dh              int out reference
+       category        SGIX_video_resize
+
+QueryChannelDeltasSGIX(display, screen, channel, x, y, w, h)
+       return          int
+       param           display         Display out reference
+       param           screen          int in value
+       param           channel         int in value
+       param           x               int out reference
+       param           y               int out reference
+       param           w               int out reference
+       param           h               int out reference
+       category        SGIX_video_resize
+
+# @@@ Not in man page - this entry point may not be shipping?
+ChannelRectSyncSGIX(display, screen, channel, synctype)
+       return          int
+       param           display         Display out reference
+       param           screen          int in value
+       param           channel         int in value
+       param           synctype        GLenum in value
+       category        SGIX_video_resize
+
+###############################################################################
+#
+# Extension #86
+# SGIX_dmbuffer commands
+#
+###############################################################################
+
+newcategory: SGIX_dmbuffer
+passthru: #ifdef _DM_BUFFER_H_
+
+AssociateDMPbufferSGIX(dpy, pbuffer, params, dmbuffer)
+       return          Bool
+       param           dpy             Display out reference
+       param           pbuffer         GLXPbufferSGIX in value
+       param           params          DMparams out reference
+       param           dmbuffer        DMbuffer in value
+       category        SGIX_dmbuffer
+
+passend: #endif /* _DM_BUFFER_H_ */
+endcategory:
+
+###############################################################################
+#
+# Extension #91
+# SGIX_swap_group commands
+#
+###############################################################################
+
+JoinSwapGroupSGIX(dpy, drawable, member)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           member          GLXDrawable in value
+       category        SGIX_swap_group
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65547
+
+###############################################################################
+#
+# Extension #92
+# SGIX_swap_barrier commands
+#
+###############################################################################
+
+BindSwapBarrierSGIX(dpy, drawable, barrier)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           barrier         int in value
+       category        SGIX_swap_barrier
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65548
+
+QueryMaxSwapBarriersSGIX(dpy, screen, max)
+       return          Bool
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           max             int out reference
+       category        SGIX_swap_barrier
+       glxflags        client-handcode server-handcode
+       glxvendorglx    65549
+
+###############################################################################
+#
+# Extension #183
+# SUN_get_transparent_index commands
+#
+###############################################################################
+
+GetTransparentIndexSUN(dpy, overlay, underlay, pTransparentIndex)
+       return          Status
+       param           dpy             Display out reference
+       param           overlay         Window in value
+       param           underlay        Window in value
+       param           pTransparentIndex       long out reference
+       category        SUN_get_transparent_index
+
+###############################################################################
+#
+# Extension #215
+# MESA_copy_sub_buffer commands
+#
+###############################################################################
+
+CopySubBufferMESA(dpy, drawable, x, y, width, height)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           x               int in value
+       param           y               int in value
+       param           width           int in value
+       param           height          int in value
+       category        MESA_copy_sub_buffer
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #216
+# MESA_pixmap_colormap commands
+#
+###############################################################################
+
+CreateGLXPixmapMESA(dpy, visual, pixmap, cmap)
+       return          GLXPixmap
+       param           dpy             Display out reference
+       param           visual          XVisualInfo out reference
+       param           pixmap          Pixmap in value
+       param           cmap            Colormap in value
+       category        MESA_pixmap_colormap
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #217
+# MESA_release_buffers commands
+#
+###############################################################################
+
+ReleaseBuffersMESA(dpy, drawable)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       category        MESA_release_buffers
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #218
+# MESA_set_3dfx_mode commands
+#
+###############################################################################
+
+# Brian's spec has this as returning 'GLboolean' and taking 'GLint mode'
+Set3DfxModeMESA(mode)
+       return          Bool
+       param           mode            int in value
+       category        MESA_set_3dfx_mode
+       glxflags        client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #234
+# SGIX_visual_select_group commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_visual_select_group
+
+###############################################################################
+#
+# Extension #237
+# OML_swap_method commands
+#
+###############################################################################
+
+# (none)
+newcategory:  OML_swap_method
+
+###############################################################################
+#
+# Extension #238
+# OML_sync_control commands
+#
+###############################################################################
+
+GetSyncValuesOML(dpy, drawable, ust, msc, sbc)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           ust             int64_t out reference
+       param           msc             int64_t out reference
+       param           sbc             int64_t out reference
+       category        OML_sync_control
+       glxflags        client-handcode server-handcode
+
+GetMscRateOML(dpy, drawable, numerator, denominator)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           numerator       int32_t out reference
+       param           denominator     int32_t out reference
+       category        OML_sync_control
+       glxflags        client-handcode server-handcode
+
+SwapBuffersMscOML(dpy, drawable, target_msc, divisor, remainder)
+       return          int64_t
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           target_msc      int64_t in value
+       param           divisor         int64_t in value
+       param           remainder       int64_t in value
+       category        OML_sync_control
+       glxflags        client-handcode server-handcode
+
+WaitForMscOML(dpy, drawable, target_msc, divisor, remainder, ust, msc, sbc)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           target_msc      int64_t in value
+       param           divisor         int64_t in value
+       param           remainder       int64_t in value
+       param           ust             int64_t out reference
+       param           msc             int64_t out reference
+       param           sbc             int64_t out reference
+       category        OML_sync_control
+       glxflags        client-handcode server-handcode
+
+WaitForSbcOML(dpy, drawable, target_sbc, ust, msc, sbc)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           target_sbc      int64_t in value
+       param           ust             int64_t out reference
+       param           msc             int64_t out reference
+       param           sbc             int64_t out reference
+       category        OML_sync_control
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #281
+# NV_float_buffer commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_float_buffer
+
+###############################################################################
+#
+# Extension #307
+# SGIX_hyperpipe commands
+#
+###############################################################################
+
+newcategory: SGIX_hyperpipe
+passthru:
+passthru: typedef struct {
+passthru:     char    pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru:     int     networkId;
+passthru: } GLXHyperpipeNetworkSGIX;
+passthru:
+passthru: typedef struct {
+passthru:     char    pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru:     int     channel;
+passthru:     unsigned int
+passthru:            participationType;
+passthru:     int     timeSlice;
+passthru: } GLXHyperpipeConfigSGIX;
+passthru:
+passthru: typedef struct {
+passthru:     char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru:     int srcXOrigin, srcYOrigin, srcWidth, srcHeight;
+passthru:     int destXOrigin, destYOrigin, destWidth, destHeight;
+passthru: } GLXPipeRect;
+passthru:
+passthru: typedef struct {
+passthru:     char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru:     int XOrigin, YOrigin, maxHeight, maxWidth;
+passthru: } GLXPipeRectLimits;
+passthru:
+
+QueryHyperpipeNetworkSGIX(dpy, npipes)
+       return          GLXHyperpipeNetworkSGIXPointer
+       param           dpy             Display out reference
+       param           npipes          int out reference
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    65550
+
+HyperpipeConfigSGIX(dpy, networkId, npipes, cfg, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           networkId       int in value
+       param           npipes          int in value
+       param           cfg             GLXHyperpipeConfigSGIX out array [COMPSIZE(npipes)]
+       param           hpId            int out reference
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    65552
+
+QueryHyperpipeConfigSGIX(dpy, hpId, npipes)
+       return          GLXHyperpipeConfigSGIXPointer
+       param           dpy             Display out reference
+       param           hpId            int in value
+       param           npipes          int out reference
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    65551
+
+DestroyHyperpipeConfigSGIX(dpy, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           hpId            int in value
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    65553
+
+BindHyperpipeSGIX(dpy, hpId)
+       return          int
+       param           dpy             Display out reference
+       param           hpId            int in value
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    ???
+
+QueryHyperpipeBestAttribSGIX(dpy, timeSlice, attrib, size, attribList, returnAttribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           attribList      void out array [COMPSIZE(size)]
+       param           returnAttribList void out array [COMPSIZE(size)]
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    ???
+
+HyperpipeAttribSGIX(dpy, timeSlice, attrib, size, attribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           attribList      void out array [COMPSIZE(size)]
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    ???
+
+QueryHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, returnAttribList)
+       return          int
+       param           dpy             Display out reference
+       param           timeSlice       int in value
+       param           attrib          int in value
+       param           size            int in value
+       param           returnAttribList void out array [COMPSIZE(size)]
+       glxflags        client-handcode server-handcode
+       category        SGIX_hyperpipe
+       glxvendorglx    ???
+
+###############################################################################
+#
+# Extension #308
+# MESA_agp_offset commands
+#
+###############################################################################
+
+GetAGPOffsetMESA(pointer)
+       return          uint
+       param           pointer         void in reference
+       glxflags        client-handcode client-intercept server-handcode
+       category        MESA_agp_offset
+
+###############################################################################
+#
+# Extension #328
+# EXT_fbconfig_packed_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_fbconfig_packed_float
+
+###############################################################################
+#
+# Extension #337
+# EXT_framebuffer_sRGB commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_framebuffer_sRGB
+
+###############################################################################
+#
+# Extension #344
+# EXT_texture_from_pixmap commands
+#
+###############################################################################
+
+BindTexImageEXT(dpy, drawable, buffer, attrib_list)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           buffer          int in value
+       param           attrib_list     int in reference
+       category        EXT_texture_from_pixmap
+       glxflags        client-handcode server-handcode
+       glxvendorglx    1330
+
+ReleaseTexImageEXT(dpy, drawable, buffer)
+       return          void
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           buffer          int in value
+       category        EXT_texture_from_pixmap
+       glxflags        client-handcode server-handcode
+       glxvendorglx    1331
+
+###############################################################################
+#
+# Extension #347
+# NV_present_video commands
+#
+###############################################################################
+
+EnumerateVideoDevicesNV(dpy, screen, nelements)
+       return          uintPointer
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           nelements       int out reference
+       category        NV_present_video
+       glxflags        client-handcode server-handcode
+
+BindVideoDeviceNV(dpy, video_slot, video_device, attrib_list)
+       return          int
+       param           dpy             Display out reference
+       param           video_slot      uint in value
+       param           video_device    uint in value
+       param           attrib_list     int in reference
+       category        NV_present_video
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #348
+# NV_video_output commands
+#
+###############################################################################
+
+GetVideoDeviceNV(dpy, screen, numVideoDevices, pVideoDevice)
+       return          int
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           numVideoDevices int in value
+       param           pVideoDevice    GLXVideoDeviceNV out array [COMPSIZE(numVideoDevices)]
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+ReleaseVideoDeviceNV(dpy, screen, VideoDevice)
+       return          int
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           VideoDevice     GLXVideoDeviceNV in value
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+BindVideoImageNV(dpy, VideoDevice, pbuf, iVideoBuffer)
+       return          int
+       param           dpy             Display out reference
+       param           VideoDevice     GLXVideoDeviceNV in value
+       param           pbuf            GLXPbuffer in value
+       param           iVideoBuffer    int in value
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+ReleaseVideoImageNV(dpy, pbuf)
+       return          int
+       param           dpy             Display out reference
+       param           pbuf            GLXPbuffer in value
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+SendPbufferToVideoNV(dpy, pbuf, iBufferType, pulCounterPbuffer, bBlock)
+       return          int
+       param           dpy             Display out reference
+       param           pbuf            GLXPbuffer in value
+       param           iBufferType     int in value
+       param           pulCounterPbuffer ulong out reference
+       param           bBlock          GLboolean in value
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+GetVideoInfoNV(dpy, screen, VideoDevice, pulCounterOutputPbuffer, pulCounterOutputVideo)
+       return          int
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           VideoDevice     GLXVideoDeviceNV in value
+       param           pulCounterOutputPbuffer ulong out reference
+       param           pulCounterOutputVideo   ulong out reference
+       category        NV_video_output
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #350
+# NV_swap_group commands
+#
+###############################################################################
+
+JoinSwapGroupNV(dpy, drawable, group)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           group           GLuint in value
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+BindSwapBarrierNV(dpy, group, barrier)
+       return          Bool
+       param           dpy             Display out reference
+       param           group           GLuint in value
+       param           barrier         GLuint in value
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+QuerySwapGroupNV(dpy, drawable, group, barrier)
+       return          Bool
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           group           GLuint out reference
+       param           barrier         GLuint out reference
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+QueryMaxSwapGroupsNV(dpy, screen, maxGroups, maxBarriers)
+       return          Bool
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           maxGroups       GLuint out reference
+       param           maxBarriers     GLuint out reference
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+QueryFrameCountNV(dpy, screen, count)
+       return          Bool
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           count           GLuint out reference
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+ResetFrameCountNV(dpy, screen)
+       return          Bool
+       param           dpy             Display out reference
+       param           screen          int in value
+       category        NV_swap_group
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #374
+# NV_video_capture commands
+#
+###############################################################################
+
+BindVideoCaptureDeviceNV(dpy, video_capture_slot, device)
+       return          int
+       param           dpy             Display out reference
+       param           video_capture_slot uint in value
+       param           device          GLXVideoCaptureDeviceNV in value
+       category        NV_video_capture
+       glxflags        client-handcode server-handcode
+
+EnumerateVideoCaptureDevicesNV(dpy, screen, nelements)
+       return          GLXVideoCaptureDeviceNVPointer
+       param           dpy             Display out reference
+       param           screen          int in value
+       param           nelements       int out reference
+       category        NV_video_capture
+       glxflags        client-handcode server-handcode
+
+LockVideoCaptureDeviceNV(dpy, device)
+       return          void
+       param           dpy             Display out reference
+       param           device          GLXVideoCaptureDeviceNV in value
+       category        NV_video_capture
+       glxflags        client-handcode server-handcode
+
+QueryVideoCaptureDeviceNV(dpy, device, attribute, value)
+       return          int
+       param           dpy             Display out reference
+       param           device          GLXVideoCaptureDeviceNV in value
+       param           attribute       int in value
+       param           value           int out array [COMPSIZE(attribute)]
+       category        NV_video_capture
+       glxflags        client-handcode server-handcode
+
+ReleaseVideoCaptureDeviceNV(dpy, device)
+       return          void
+       param           dpy             Display out reference
+       param           device          GLXVideoCaptureDeviceNV in value
+       category        NV_video_capture
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #375
+# EXT_swap_control commands
+#
+###############################################################################
+
+SwapIntervalEXT(dpy, drawable, interval)
+       return          int
+       param           dpy             Display out reference
+       param           drawable        GLXDrawable in value
+       param           interval        int in value
+       category        EXT_swap_control
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #376
+# NV_copy_image commands
+#
+###############################################################################
+
+CopyImageSubDataNV(dpy, srcCtx, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstCtx, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth)
+       return          void
+       param           dpy             Display out reference
+       param           srcCtx          GLXContext in value
+       param           srcName         GLuint in value
+       param           srcTarget       GLenum in value
+       param           srcLevel        GLint in value
+       param           srcX            GLint in value
+       param           srcY            GLint in value
+       param           srcZ            GLint in value
+       param           dstCtx          GLXContext in value
+       param           dstName         GLuint in value
+       param           dstTarget       GLenum in value
+       param           dstLevel        GLint in value
+       param           dstX            GLint in value
+       param           dstY            GLint in value
+       param           dstZ            GLint in value
+       param           width           GLsizei in value
+       param           height          GLsizei in value
+       param           depth           GLsizei in value
+       category        NV_copy_image
+       glxflags        client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #384
+# INTEL_swap_event commands
+#
+###############################################################################
+
+# (none)
+newcategory: INTEL_swap_event
diff --git a/src/glx/apple/specs/update.sh b/src/glx/apple/specs/update.sh
new file mode 100755 (executable)
index 0000000..f8c3158
--- /dev/null
@@ -0,0 +1,4 @@
+for f in enum.spec enumext.spec gl.spec gl.tm glx.spec glxenum.spec glxenumext.spec glxext.spec ; do
+       curl -LO http://www.opengl.org/registry/api/$f
+done
+
index a7dfb5348603444752fe2b4a44741ff519888f48..b26c17938db9d750d5d0387da85585d79ffe333c 100644 (file)
@@ -35,6 +35,7 @@
 
 /*****************************************************************************/
 
+#ifndef GLX_USE_APPLEGL
 static void
 do_enable_disable(GLenum array, GLboolean val)
 {
@@ -123,6 +124,7 @@ __indirect_glPopClientAttrib(void)
       return;
    }
 }
+#endif
 
 void
 __glFreeAttributeState(__GLXcontext * gc)
index 3a53ce91b382a19aff115600c85eddafd2de94e2..6058c721da7a8efe6cb201a578b0f918d92a226b 100644 (file)
@@ -30,7 +30,7 @@
  *   Kristian Høgsberg (krh@redhat.com)
  */
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 
 #include <X11/Xlib.h>
 #include <X11/extensions/Xfixes.h>
 #include "xf86drm.h"
 #include "dri2.h"
 #include "dri_common.h"
-#include "../../mesa/drivers/dri/common/dri_util.h"
+
+/* From xmlpool/options.h, user exposed so should be stable */
+#define DRI_CONF_VBLANK_NEVER 0
+#define DRI_CONF_VBLANK_DEF_INTERVAL_0 1
+#define DRI_CONF_VBLANK_DEF_INTERVAL_1 2
+#define DRI_CONF_VBLANK_ALWAYS_SYNC 3
 
 #undef DRI2_MINOR
 #define DRI2_MINOR 1
@@ -177,6 +182,7 @@ dri2CreateDrawable(__GLXscreenConfigs * psc,
    __GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) modes;
    __GLXdisplayPrivate *dpyPriv;
    __GLXDRIdisplayPrivate *pdp;
+   GLint vblank_mode = DRI_CONF_VBLANK_DEF_INTERVAL_1;
 
    pdraw = Xmalloc(sizeof(*pdraw));
    if (!pdraw)
@@ -187,7 +193,23 @@ dri2CreateDrawable(__GLXscreenConfigs * psc,
    pdraw->base.drawable = drawable;
    pdraw->base.psc = psc;
    pdraw->bufferCount = 0;
-   pdraw->swap_interval = 1;
+   pdraw->swap_interval = 1; /* default may be overridden below */
+   pdraw->have_back = 0;
+
+   if (psc->config)
+      psc->config->configQueryi(psc->__driScreen, "vblank_mode", &vblank_mode);
+
+   switch (vblank_mode) {
+   case DRI_CONF_VBLANK_NEVER:
+   case DRI_CONF_VBLANK_DEF_INTERVAL_0:
+      pdraw->swap_interval = 0;
+      break;
+   case DRI_CONF_VBLANK_DEF_INTERVAL_1:
+   case DRI_CONF_VBLANK_ALWAYS_SYNC:
+   default:
+      pdraw->swap_interval = 1;
+      break;
+   }
 
    DRI2CreateDrawable(psc->dpy, xDrawable);
 
@@ -204,12 +226,14 @@ dri2CreateDrawable(__GLXscreenConfigs * psc,
       return NULL;
    }
 
+#ifdef X_DRI2SwapInterval
    /*
     * Make sure server has the same swap interval we do for the new
     * drawable.
     */
    if (pdp->swapAvailable)
       DRI2SwapInterval(psc->dpy, xDrawable, pdraw->swap_interval);
+#endif
 
    return &pdraw->base;
 }
@@ -474,7 +498,23 @@ dri2GetBuffersWithFormat(__DRIdrawable * driDrawable,
 static void
 dri2SetSwapInterval(__GLXDRIdrawable *pdraw, int interval)
 {
+   __GLXscreenConfigs *psc = pdraw->psc;
    __GLXDRIdrawablePrivate *priv =  (__GLXDRIdrawablePrivate *) pdraw;
+   GLint vblank_mode = DRI_CONF_VBLANK_DEF_INTERVAL_1;
+
+   if (psc->config)
+      psc->config->configQueryi(psc->__driScreen, "vblank_mode", &vblank_mode);
+
+   switch (vblank_mode) {
+   case DRI_CONF_VBLANK_NEVER:
+      return;
+   case DRI_CONF_VBLANK_ALWAYS_SYNC:
+      if (interval <= 0)
+        return;
+      break;
+   default:
+      break;
+   }
 
    DRI2SwapInterval(priv->base.psc->dpy, pdraw->xDrawable, interval);
    priv->swap_interval = interval;
index e4034161bb32c2ec07a6e8ba0b85a654ee7b7456..429fc6d89126d91cf495e713134d390bb79f12ed 100644 (file)
@@ -33,7 +33,7 @@
  *   Kristian Høgsberg (krh@redhat.com)
  */
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 
 #include <unistd.h>
 #include <dlfcn.h>
@@ -403,6 +403,11 @@ dri2BindExtensions(__GLXscreenConfigs *psc)
         /* internal driver extension, no GL extension exposed */
       }
 #endif
+
+#ifdef __DRI2_CONFIG_QUERY
+      if ((strcmp(extensions[i]->name, __DRI2_CONFIG_QUERY) == 0))
+        psc->config = (__DRI2configQueryExtension *) extensions[i];
+#endif
    }
 }
 
index e47db82b70f64f59c1a55e3a5fc61e765c6336b3..74afa60301d6123879da9b1177b51e78be1669fd 100644 (file)
@@ -32,7 +32,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  */
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 
 #include <X11/Xlib.h>
 #include <X11/extensions/Xfixes.h>
index 786faff81c1733651f27f3adc06f1d8f027d10ed..cdb1d9f4dc3ea0a4243eb98fcace7644cd3a8e28 100644 (file)
@@ -21,7 +21,7 @@
  * SOFTWARE.
  */
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 
 #include <X11/Xlib.h>
 #include "glxclient.h"
index eb9037907fc55c0b6c88c748075b68ade5d64b8c..cdc16f8330ad5f8a1ec52286eff8771d28d83358 100644 (file)
@@ -237,9 +237,11 @@ _gl_get_context_mode_data(const __GLcontextModes * mode, int attribute,
    case GLX_LEVEL:
       *value_return = mode->level;
       return 0;
+#ifndef GLX_USE_APPLEGL               /* This isn't supported by CGL. */
    case GLX_TRANSPARENT_TYPE_EXT:
       *value_return = mode->transparentPixel;
       return 0;
+#endif
    case GLX_TRANSPARENT_RED_VALUE:
       *value_return = mode->transparentRed;
       return 0;
@@ -285,6 +287,7 @@ _gl_get_context_mode_data(const __GLcontextModes * mode, int attribute,
    case GLX_MAX_PBUFFER_PIXELS:
       *value_return = mode->maxPbufferPixels;
       return 0;
+#ifndef GLX_USE_APPLEGL               /* These aren't supported by CGL. */
    case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX:
       *value_return = mode->optimalPbufferWidth;
       return 0;
@@ -294,6 +297,7 @@ _gl_get_context_mode_data(const __GLcontextModes * mode, int attribute,
    case GLX_SWAP_METHOD_OML:
       *value_return = mode->swapMethod;
       return 0;
+#endif
    case GLX_SAMPLE_BUFFERS_SGIS:
       *value_return = mode->sampleBuffers;
       return 0;
index 2098cc6a52d241c27df03fd0c671f007f036ae62..b8d0f21bf0620a9387d1dfe13944251744319c1f 100644 (file)
 #include <string.h>
 #include "glxextensions.h"
 
+#ifdef GLX_USE_APPLEGL
+#include <pthread.h>
+#include "apple_glx_drawable.h"
+#include "glx_error.h"
+#endif
+
 #define WARN_ONCE_GLX_1_3(a, b) {              \
                static int warned=1;            \
                if(warned) {                    \
  * Emit a warning when clients use GLX 1.3 functions on pre-1.3 systems.
  */
 static void
-warn_GLX_1_3(Display *dpy, const char *function_name)
+warn_GLX_1_3(Display * dpy, const char *function_name)
 {
    __GLXdisplayPrivate *priv = __glXInitialize(dpy);
 
    if (priv->minorVersion < 3) {
-      fprintf(stderr, 
-             "WARNING: Application calling GLX 1.3 function \"%s\" "
-             "when GLX 1.3 is not supported!  This is an application bug!\n",
-             function_name);
+      fprintf(stderr,
+              "WARNING: Application calling GLX 1.3 function \"%s\" "
+              "when GLX 1.3 is not supported!  This is an application bug!\n",
+              function_name);
    }
 }
 
-
+#ifndef GLX_USE_APPLEGL
 /**
  * Change a drawable's attribute.
  *
@@ -320,7 +326,7 @@ GetDrawableAttribute(Display * dpy, GLXDrawable drawable,
             }
          }
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
          {
             __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
 
@@ -586,6 +592,7 @@ glXCreateGLXPbufferSGIX(Display * dpy, GLXFBConfigSGIX config,
                                          attrib_list, GL_FALSE);
 }
 
+#endif /* GLX_USE_APPLEGL */
 
 /**
  * Create a new pbuffer.
@@ -594,12 +601,57 @@ PUBLIC GLXPbuffer
 glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int *attrib_list)
 {
    int i, width, height;
+#ifdef GLX_USE_APPLEGL
+   GLXPbuffer result;
+   int errorcode;
+#endif
 
    width = 0;
    height = 0;
 
    WARN_ONCE_GLX_1_3(dpy, __func__);
 
+#ifdef GLX_USE_APPLEGL
+   for (i = 0; attrib_list[i]; ++i) {
+      switch (attrib_list[i]) {
+      case GLX_PBUFFER_WIDTH:
+         width = attrib_list[i + 1];
+         ++i;
+         break;
+
+      case GLX_PBUFFER_HEIGHT:
+         height = attrib_list[i + 1];
+         ++i;
+         break;
+
+      case GLX_LARGEST_PBUFFER:
+         /* This is a hint we should probably handle, but how? */
+         ++i;
+         break;
+
+      case GLX_PRESERVED_CONTENTS:
+         /* The contents are always preserved with AppleSGLX with CGL. */
+         ++i;
+         break;
+
+      default:
+         return None;
+      }
+   }
+
+   if (apple_glx_pbuffer_create(dpy, config, width, height, &errorcode,
+                                &result)) {
+      /* 
+       * apple_glx_pbuffer_create only sets the errorcode to core X11
+       * errors. 
+       */
+      __glXSendError(dpy, errorcode, 0, X_GLXCreatePbuffer, true);
+
+      return None;
+   }
+
+   return result;
+#else
    for (i = 0; attrib_list[i * 2]; i++) {
       switch (attrib_list[i * 2]) {
       case GLX_PBUFFER_WIDTH:
@@ -613,6 +665,7 @@ glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int *attrib_list)
 
    return (GLXPbuffer) CreatePbuffer(dpy, (__GLcontextModes *) config,
                                      width, height, attrib_list, GL_TRUE);
+#endif
 }
 
 
@@ -622,7 +675,13 @@ glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int *attrib_list)
 PUBLIC void
 glXDestroyPbuffer(Display * dpy, GLXPbuffer pbuf)
 {
+#ifdef GLX_USE_APPLEGL
+   if (apple_glx_pbuffer_destroy(dpy, pbuf)) {
+      __glXSendError(dpy, GLXBadPbuffer, pbuf, X_GLXDestroyPbuffer, false);
+   }
+#else
    DestroyPbuffer(dpy, pbuf);
+#endif
 }
 
 
@@ -634,10 +693,47 @@ glXQueryDrawable(Display * dpy, GLXDrawable drawable,
                  int attribute, unsigned int *value)
 {
    WARN_ONCE_GLX_1_3(dpy, __func__);
+#ifdef GLX_USE_APPLEGL
+   Window root;
+   int x, y;
+   unsigned int width, height, bd, depth;
+
+   if (apple_glx_pixmap_query(drawable, attribute, value))
+      return;                   /*done */
+
+   if (apple_glx_pbuffer_query(drawable, attribute, value))
+      return;                   /*done */
+
+   /*
+    * The OpenGL spec states that we should report GLXBadDrawable if
+    * the drawable is invalid, however doing so would require that we
+    * use XSetErrorHandler(), which is known to not be thread safe.
+    * If we use a round-trip call to validate the drawable, there could
+    * be a race, so instead we just opt in favor of letting the
+    * XGetGeometry request fail with a GetGeometry request X error 
+    * rather than GLXBadDrawable, in what is hoped to be a rare
+    * case of an invalid drawable.  In practice most and possibly all
+    * X11 apps using GLX shouldn't notice a difference.
+    */
+   if (XGetGeometry
+       (dpy, drawable, &root, &x, &y, &width, &height, &bd, &depth)) {
+      switch (attribute) {
+      case GLX_WIDTH:
+         *value = width;
+         break;
+
+      case GLX_HEIGHT:
+         *value = height;
+         break;
+      }
+   }
+#else
    GetDrawableAttribute(dpy, drawable, attribute, value);
+#endif
 }
 
 
+#ifndef GLX_USE_APPLEGL
 /**
  * Query an attribute of a pbuffer.
  */
@@ -647,7 +743,7 @@ glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX drawable,
 {
    return GetDrawableAttribute(dpy, drawable, attribute, value);
 }
-
+#endif
 
 /**
  * Select the event mask for a drawable.
@@ -655,12 +751,30 @@ glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX drawable,
 PUBLIC void
 glXSelectEvent(Display * dpy, GLXDrawable drawable, unsigned long mask)
 {
+#ifdef GLX_USE_APPLEGL
+   XWindowAttributes xwattr;
+
+   if (apple_glx_pbuffer_set_event_mask(drawable, mask))
+      return;                   /*done */
+
+   /* 
+    * The spec allows a window, but currently there are no valid
+    * events for a window, so do nothing.
+    */
+   if (XGetWindowAttributes(dpy, drawable, &xwattr))
+      return;                   /*done */
+   /* The drawable seems to be invalid.  Report an error. */
+
+   __glXSendError(dpy, GLXBadDrawable, drawable,
+                  X_GLXChangeDrawableAttributes, false);
+#else
    CARD32 attribs[2];
 
    attribs[0] = (CARD32) GLX_EVENT_MASK;
    attribs[1] = (CARD32) mask;
 
    ChangeDrawableAttribute(dpy, drawable, attribs, 1);
+#endif
 }
 
 
@@ -670,6 +784,26 @@ glXSelectEvent(Display * dpy, GLXDrawable drawable, unsigned long mask)
 PUBLIC void
 glXGetSelectedEvent(Display * dpy, GLXDrawable drawable, unsigned long *mask)
 {
+#ifdef GLX_USE_APPLEGL
+   XWindowAttributes xwattr;
+
+   if (apple_glx_pbuffer_get_event_mask(drawable, mask))
+      return;                   /*done */
+
+   /* 
+    * The spec allows a window, but currently there are no valid
+    * events for a window, so do nothing, but set the mask to 0.
+    */
+   if (XGetWindowAttributes(dpy, drawable, &xwattr)) {
+      /* The window is valid, so set the mask to 0. */
+      *mask = 0;
+      return;                   /*done */
+   }
+   /* The drawable seems to be invalid.  Report an error. */
+
+   __glXSendError(dpy, GLXBadDrawable, drawable, X_GLXGetDrawableAttributes,
+                  true);
+#else
    unsigned int value;
 
 
@@ -680,6 +814,7 @@ glXGetSelectedEvent(Display * dpy, GLXDrawable drawable, unsigned long *mask)
 
    GetDrawableAttribute(dpy, drawable, GLX_EVENT_MASK_SGIX, &value);
    *mask = value;
+#endif
 }
 
 
@@ -689,8 +824,17 @@ glXCreatePixmap(Display * dpy, GLXFBConfig config, Pixmap pixmap,
 {
    WARN_ONCE_GLX_1_3(dpy, __func__);
 
+#ifdef GLX_USE_APPLEGL
+   const __GLcontextModes *modes = (const __GLcontextModes *) config;
+
+   if (apple_glx_pixmap_create(dpy, modes->screen, pixmap, modes))
+      return None;
+
+   return pixmap;
+#else
    return CreateDrawable(dpy, (__GLcontextModes *) config,
                          (Drawable) pixmap, attrib_list, X_GLXCreatePixmap);
+#endif
 }
 
 
@@ -699,9 +843,33 @@ glXCreateWindow(Display * dpy, GLXFBConfig config, Window win,
                 const int *attrib_list)
 {
    WARN_ONCE_GLX_1_3(dpy, __func__);
+#ifdef GLX_USE_APPLEGL
+   XWindowAttributes xwattr;
+   XVisualInfo *visinfo;
+
+   (void) attrib_list;          /*unused according to GLX 1.4 */
+
+   XGetWindowAttributes(dpy, win, &xwattr);
 
+   visinfo = glXGetVisualFromFBConfig(dpy, config);
+
+   if (NULL == visinfo) {
+      __glXSendError(dpy, GLXBadFBConfig, 0, X_GLXCreateWindow, false);
+      return None;
+   }
+
+   if (visinfo->visualid != XVisualIDFromVisual(xwattr.visual)) {
+      __glXSendError(dpy, BadMatch, 0, X_GLXCreateWindow, true);
+      return None;
+   }
+
+   XFree(visinfo);
+
+   return win;
+#else
    return CreateDrawable(dpy, (__GLcontextModes *) config,
                          (Drawable) win, attrib_list, X_GLXCreateWindow);
+#endif
 }
 
 
@@ -709,8 +877,12 @@ PUBLIC void
 glXDestroyPixmap(Display * dpy, GLXPixmap pixmap)
 {
    WARN_ONCE_GLX_1_3(dpy, __func__);
-
+#ifdef GLX_USE_APPLEGL
+   if (apple_glx_pixmap_destroy(dpy, pixmap))
+      __glXSendError(dpy, GLXBadPixmap, pixmap, X_GLXDestroyPixmap, false);
+#else
    DestroyDrawable(dpy, (GLXDrawable) pixmap, X_GLXDestroyPixmap);
+#endif
 }
 
 
@@ -718,11 +890,12 @@ PUBLIC void
 glXDestroyWindow(Display * dpy, GLXWindow win)
 {
    WARN_ONCE_GLX_1_3(dpy, __func__);
-
+#ifndef GLX_USE_APPLEGL
    DestroyDrawable(dpy, (GLXDrawable) win, X_GLXDestroyWindow);
+#endif
 }
 
-
+#ifndef GLX_USE_APPLEGL
 PUBLIC
 GLX_ALIAS_VOID(glXDestroyGLXPbufferSGIX,
                (Display * dpy, GLXPbufferSGIX pbuf),
@@ -738,4 +911,4 @@ GLX_ALIAS_VOID(glXGetSelectedEventSGIX,
                (Display * dpy, GLXDrawable drawable,
                 unsigned long *mask), (dpy, drawable, mask),
                glXGetSelectedEvent)
-
+#endif
index 8e5dc785dd981206a43e2b733fa32ed8813fafdd..57d254ea9873f54fe3ecae6e5ef0cb979d7c6735 100644 (file)
@@ -97,8 +97,13 @@ typedef struct _glapi_table __GLapi;
 #define containerOf(ptr, type, member)              \
     (type *)( (char *)ptr - offsetof(type,member) )
 
-#include <GL/internal/dri_interface.h>
+extern void DRI_glXUseXFont(Font font, int first, int count, int listbase);
+
+#endif
 
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+
+#include <GL/internal/dri_interface.h>
 
 /**
  * Display dependent methods.  This structure is initialized during the
@@ -185,8 +190,6 @@ extern __GLXDRIdisplay *dri2CreateDisplay(Display * dpy);
 extern void dri2InvalidateBuffers(Display *dpy, XID drawable);
 
 
-extern void DRI_glXUseXFont(Font font, int first, int count, int listbase);
-
 /*
 ** Functions to obtain driver configuration information from a direct
 ** rendering client application
@@ -405,8 +408,13 @@ struct __GLXcontextRec
    const __GLcontextModes *mode;
 
 #ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+   void *driContext;
+   Bool do_destroy;
+#else
    __GLXDRIcontext *driContext;
    __DRIcontext *__driContext;
+#endif
 #endif
 
     /**
@@ -503,7 +511,7 @@ struct __GLXscreenConfigsRec
      */
    char *effectiveGLXexts;
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     /**
      * Per screen direct rendering interface functions and data.
      */
@@ -549,6 +557,10 @@ struct __GLXscreenConfigsRec
    const __DRI2flushExtension *f;
 #endif
 
+#ifdef __DRI2_CONFIG_QUERY
+   const __DRI2configQueryExtension *config;
+#endif
+
 #endif
 
     /**
@@ -614,7 +626,7 @@ struct __GLXdisplayPrivateRec
      */
    __GLXscreenConfigs *screenConfigs;
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     /**
      * Per display direct rendering interface functions and data.
      */
@@ -792,7 +804,7 @@ extern GLboolean __glXGetMscRateOML(Display * dpy, GLXDrawable drawable,
                                     int32_t * numerator,
                                     int32_t * denominator);
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 GLboolean
 __driGetMscRateOML(__DRIdrawable * draw,
                    int32_t * numerator, int32_t * denominator, void *private);
index e256a078f196e394bdb5b4833d4752454420c15a..926be1014a8a2a2b171cbf2328e846d4bbea55a0 100644 (file)
 #include "glcontextmodes.h"
 
 #ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+#include "apple_glx_context.h"
+#include "apple_glx.h"
+#include "glx_error.h"
+#define GC_IS_DIRECT(gc) ((gc)->isDirect)
+#else
 #include <sys/time.h>
 #include <X11/extensions/xf86vmode.h>
 #include "xf86dri.h"
 #define GC_IS_DIRECT(gc) ((gc)->driContext != NULL)
+#endif
 #else
 #define GC_IS_DIRECT(gc) (0)
 #endif
@@ -59,7 +66,7 @@ static const char __glXGLXClientVersion[] = "1.4";
 
 /****************************************************************************/
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 
 static Bool windowExistsFlag;
 static int
@@ -344,6 +351,12 @@ AllocateGLXContext(Display * dpy)
       bufSize = __GLX_MAX_RENDER_CMD_SIZE;
    }
    gc->maxSmallRenderCommandSize = bufSize;
+   
+#ifdef GLX_USE_APPLEGL
+   gc->driContext = NULL;
+   gc->do_destroy = False;   
+#endif
+
    return gc;
 }
 
@@ -366,9 +379,14 @@ CreateContext(Display * dpy, int generic_id,
 {
    GLXContext gc;
 #ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+   int errorcode;
+   bool x11error;
+#else
    __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
 #endif
-
+#endif
+    
    if (dpy == NULL)
       return NULL;
 
@@ -379,6 +397,7 @@ CreateContext(Display * dpy, int generic_id,
    if (!gc)
       return NULL;
 
+#ifndef GLX_USE_APPLEGL  /* TODO: darwin indirect */
 #ifdef GLX_DIRECT_RENDERING
    if (allowDirect && psc->driScreen) {
       gc->driContext = psc->driScreen->createContext(psc, fbconfig, gc,
@@ -455,10 +474,26 @@ CreateContext(Display * dpy, int generic_id,
 
    UnlockDisplay(dpy);
    SyncHandle();
+#endif
 
    gc->imported = GL_FALSE;
    gc->renderType = renderType;
 
+   /* TODO: darwin: Integrate with above to do indirect */
+#ifdef GLX_USE_APPLEGL
+   if(apple_glx_create_context(&gc->driContext, dpy, screen, fbconfig, 
+                               shareList ? shareList->driContext : NULL,
+                               &errorcode, &x11error)) {
+      __glXSendError(dpy, errorcode, 0, X_GLXCreateContext, x11error);
+      __glXFreeContext(gc);
+      return NULL;
+   }
+   
+   gc->currentContextTag = -1;
+   gc->mode = fbconfig;
+   gc->isDirect = allowDirect;
+#endif
+
    return gc;
 }
 
@@ -469,7 +504,7 @@ glXCreateContext(Display * dpy, XVisualInfo * vis,
    const __GLcontextModes *mode = NULL;
    int renderType = 0;
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) || defined(GLX_USE_APPLEGL)
    __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, vis->screen);
 
    mode = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
@@ -517,6 +552,7 @@ __glXFreeContext(__GLXcontext * gc)
 static void
 DestroyContext(Display * dpy, GLXContext gc)
 {
+#ifndef GLX_USE_APPLEGL /* TODO: darwin: indirect */
    xGLXDestroyContextReq *req;
    GLXContextID xid;
    CARD8 opcode;
@@ -542,7 +578,7 @@ DestroyContext(Display * dpy, GLXContext gc)
       return;
    }
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    /* Destroy the direct rendering context */
    if (gc->driContext) {
       (*gc->driContext->destroyContext) (gc->driContext, gc->psc, dpy);
@@ -552,17 +588,31 @@ DestroyContext(Display * dpy, GLXContext gc)
 #endif
 
    __glXFreeVertexArrayState(gc);
+#else
+   __glXLock();
+#endif /* GLX_USE_APPLEGL */   
 
    if (gc->currentDpy) {
+#ifdef GLX_USE_APPLEGL
+      /* 
+       * Set the Bool that indicates that we should destroy this GLX context
+       * when the context is no longer current.
+       */
+      gc->do_destroy = True;
+#endif
       /* Have to free later cuz it's in use now */
       __glXUnlock();
    }
    else {
       /* Destroy the handle if not current to anybody */
       __glXUnlock();
+#ifdef GLX_USE_APPLEGL
+      if(gc->driContext)
+         apple_glx_destroy_context(&gc->driContext, dpy);
+#endif
       __glXFreeContext(gc);
    }
-
+#ifndef GLX_USE_APPLEGL
    if (!imported) {
       /*
        ** This dpy also created the server side part of the context.
@@ -576,6 +626,7 @@ DestroyContext(Display * dpy, GLXContext gc)
       UnlockDisplay(dpy);
       SyncHandle();
    }
+#endif
 }
 
 PUBLIC void
@@ -630,7 +681,9 @@ glXQueryExtension(Display * dpy, int *errorBase, int *eventBase)
 PUBLIC void
 glXWaitGL(void)
 {
+#ifndef GLX_USE_APPLEGL
    xGLXWaitGLReq *req;
+#endif
    GLXContext gc = __glXGetCurrentContext();
    Display *dpy = gc->currentDpy;
 
@@ -639,8 +692,10 @@ glXWaitGL(void)
 
    /* Flush any pending commands out */
    __glXFlushRenderBuffer(gc, gc->pc);
-
-#ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+   glFinish();
+#else
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    if (gc->driContext) {
       int screen;
       __GLXDRIdrawable *pdraw =
@@ -664,6 +719,7 @@ glXWaitGL(void)
    req->contextTag = gc->currentContextTag;
    UnlockDisplay(dpy);
    SyncHandle();
+#endif /* GLX_USE_APPLEGL */
 }
 
 /*
@@ -673,7 +729,9 @@ glXWaitGL(void)
 PUBLIC void
 glXWaitX(void)
 {
+#ifndef GLX_USE_APPLEGL
    xGLXWaitXReq *req;
+#endif
    GLXContext gc = __glXGetCurrentContext();
    Display *dpy = gc->currentDpy;
 
@@ -683,7 +741,10 @@ glXWaitX(void)
    /* Flush any pending commands out */
    __glXFlushRenderBuffer(gc, gc->pc);
 
-#ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+   apple_glx_waitx(dpy, gc->driContext);
+#else
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    if (gc->driContext) {
       int screen;
       __GLXDRIdrawable *pdraw =
@@ -710,12 +771,15 @@ glXWaitX(void)
    req->contextTag = gc->currentContextTag;
    UnlockDisplay(dpy);
    SyncHandle();
+#endif /* GLX_USE_APPLEGL */
 }
 
 PUBLIC void
 glXUseXFont(Font font, int first, int count, int listBase)
 {
+#ifndef GLX_USE_APPLEGL
    xGLXUseXFontReq *req;
+#endif
    GLXContext gc = __glXGetCurrentContext();
    Display *dpy = gc->currentDpy;
 
@@ -724,8 +788,10 @@ glXUseXFont(Font font, int first, int count, int listBase)
 
    /* Flush any pending commands out */
    (void) __glXFlushRenderBuffer(gc, gc->pc);
-
-#ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+   DRI_glXUseXFont(font, first, count, listBase); 
+#else
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    if (gc->driContext) {
       DRI_glXUseXFont(font, first, count, listBase);
       return;
@@ -744,6 +810,7 @@ glXUseXFont(Font font, int first, int count, int listBase)
    req->listBase = listBase;
    UnlockDisplay(dpy);
    SyncHandle();
+#endif /* GLX_USE_APPLEGL */
 }
 
 /************************************************************************/
@@ -756,6 +823,17 @@ PUBLIC void
 glXCopyContext(Display * dpy, GLXContext source,
                GLXContext dest, unsigned long mask)
 {
+#ifdef GLX_USE_APPLEGL
+   GLXContext gc = __glXGetCurrentContext();
+   int errorcode;
+   bool x11error;
+
+   if(apple_glx_copy_context(gc->driContext, source->driContext, dest->driContext,
+                             mask, &errorcode, &x11error)) {
+      __glXSendError(dpy, errorcode, 0, X_GLXCopyContext, x11error);
+   }
+   
+#else
    xGLXCopyContextReq *req;
    GLXContext gc = __glXGetCurrentContext();
    GLXContextTag tag;
@@ -766,7 +844,7 @@ glXCopyContext(Display * dpy, GLXContext source,
       return;
    }
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    if (gc->driContext) {
       /* NOT_DONE: This does not work yet */
    }
@@ -794,6 +872,7 @@ glXCopyContext(Display * dpy, GLXContext source,
    req->contextTag = tag;
    UnlockDisplay(dpy);
    SyncHandle();
+#endif /* GLX_USE_APPLEGL */
 }
 
 
@@ -808,6 +887,9 @@ glXCopyContext(Display * dpy, GLXContext source,
 static Bool
 __glXIsDirect(Display * dpy, GLXContextID contextID)
 {
+#ifdef GLX_USE_APPLEGL /* TODO: apple indirect */
+   return GC_IS_DIRECT(gc);
+#else
 #if !defined(USE_XCB)
    xGLXIsDirectReq *req;
    xGLXIsDirectReply reply;
@@ -843,6 +925,7 @@ __glXIsDirect(Display * dpy, GLXContextID contextID)
 
    return reply.isDirect;
 #endif /* USE_XCB */
+#endif /* GLX_USE_APPLEGL */
 }
 
 /**
@@ -866,6 +949,18 @@ glXIsDirect(Display * dpy, GLXContext gc)
 PUBLIC GLXPixmap
 glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
 {
+#ifdef GLX_USE_APPLEGL
+   int screen = vis->screen;
+   __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
+   const __GLcontextModes *modes;
+
+   modes = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
+   
+   if(apple_glx_pixmap_create(dpy, vis->screen, pixmap, modes))
+      return None;
+   
+   return pixmap;
+#else
    xGLXCreateGLXPixmapReq *req;
    GLXPixmap xid;
    CARD8 opcode;
@@ -887,7 +982,7 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
    UnlockDisplay(dpy);
    SyncHandle();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    do {
       /* FIXME: Maybe delay __DRIdrawable creation until the drawable
        * is actually bound to a context... */
@@ -915,6 +1010,7 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
 #endif
 
    return xid;
+#endif
 }
 
 /*
@@ -923,6 +1019,10 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
 PUBLIC void
 glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap)
 {
+#ifdef GLX_USE_APPLEGL
+   if(apple_glx_pixmap_destroy(dpy, glxpixmap))
+      __glXSendError(dpy, GLXBadPixmap, glxpixmap, X_GLXDestroyPixmap, false);
+#else
    xGLXDestroyGLXPixmapReq *req;
    CARD8 opcode;
 
@@ -940,7 +1040,7 @@ glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap)
    UnlockDisplay(dpy);
    SyncHandle();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    {
       int screen;
       __GLXdisplayPrivate *const priv = __glXInitialize(dpy);
@@ -953,11 +1053,20 @@ glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap)
       }
    }
 #endif
+#endif /* GLX_USE_APPLEGL */
 }
 
 PUBLIC void
 glXSwapBuffers(Display * dpy, GLXDrawable drawable)
 {
+#ifdef GLX_USE_APPLEGL
+   GLXContext gc = glXGetCurrentContext();
+   if(gc && apple_glx_is_current_drawable(dpy, gc->driContext, drawable)) {
+      apple_glx_swap_buffers(gc->driContext);
+   } else {
+      __glXSendError(dpy, GLXBadCurrentWindow, 0, X_GLXSwapBuffers, false);
+   }
+#else
    GLXContext gc;
    GLXContextTag tag;
    CARD8 opcode;
@@ -967,7 +1076,7 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable)
    xGLXSwapBuffersReq *req;
 #endif
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
 
    if (pdraw != NULL) {
@@ -1012,6 +1121,7 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable)
    SyncHandle();
    XFlush(dpy);
 #endif /* USE_XCB */
+#endif /* GLX_USE_APPLEGL */
 }
 
 
@@ -1440,6 +1550,12 @@ glXChooseVisual(Display * dpy, int screen, int *attribList)
       }
    }
 
+#ifdef GLX_USE_APPLEGL
+   if(visualList && getenv("LIBGL_DUMP_VISUALID")) {
+      printf("visualid 0x%lx\n", visualList[0].visualid);
+   }
+#endif
+
    return visualList;
 }
 
@@ -1462,7 +1578,7 @@ glXQueryExtensionsString(Display * dpy, int screen)
       }
 
       __glXCalculateUsableExtensions(psc,
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
                                      (psc->driScreen != NULL),
 #else
                                      GL_FALSE,
@@ -1573,6 +1689,7 @@ PUBLIC
 GLX_ALIAS(Display *, glXGetCurrentDisplayEXT, (void), (),
           glXGetCurrentDisplay)
 
+#ifndef GLX_USE_APPLEGL
 /**
  * Used internally by libGL to send \c xGLXQueryContextinfoExtReq requests
  * to the X-server.
@@ -1684,13 +1801,16 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
    return retval;
 }
 
+#endif
+
 PUBLIC int
 glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int *value)
 {
+#ifndef GLX_USE_APPLEGL
    int retVal;
 
    /* get the information from the server if we don't have it already */
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    if (!ctx->driContext && (ctx->mode == NULL)) {
 #else
    if (ctx->mode == NULL) {
@@ -1699,13 +1819,17 @@ glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int *value)
       if (Success != retVal)
          return retVal;
    }
+#endif
+
    switch (attribute) {
-   case GLX_SHARE_CONTEXT_EXT:
+#ifndef GLX_USE_APPLEGL
+      case GLX_SHARE_CONTEXT_EXT:
       *value = (int) (ctx->share_xid);
       break;
    case GLX_VISUAL_ID_EXT:
       *value = ctx->mode ? ctx->mode->visualID : None;
       break;
+#endif
    case GLX_SCREEN:
       *value = (int) (ctx->screen);
       break;
@@ -1734,6 +1858,9 @@ PUBLIC GLXContextID glXGetContextIDEXT(const GLXContext ctx)
 PUBLIC GLXContext
 glXImportContextEXT(Display * dpy, GLXContextID contextID)
 {
+#ifdef GLX_USE_APPLEGL
+   return NULL;
+#else
    GLXContext ctx;
 
    if (contextID == None) {
@@ -1754,6 +1881,7 @@ glXImportContextEXT(Display * dpy, GLXContextID contextID)
       }
    }
    return ctx;
+#endif
 }
 
 PUBLIC void
@@ -1881,7 +2009,7 @@ glXGetVisualFromFBConfig(Display * dpy, GLXFBConfig config)
    return XGetVisualInfo(dpy, VisualIDMask, &visualTemplate, &count);
 }
 
-
+#ifndef GLX_USE_APPLEGL
 /*
 ** GLX_SGI_swap_control
 */
@@ -2236,6 +2364,7 @@ __glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
    return GLX_BAD_CONTEXT;
 }
 
+#endif /* GLX_USE_APPLEGL */
 
 /*
 ** GLX_SGIX_fbconfig
@@ -2262,17 +2391,24 @@ glXCreateGLXPixmapWithConfigSGIX(Display * dpy,
                                  GLXFBConfigSGIX config,
                                  Pixmap pixmap)
 {
+#ifndef GLX_USE_APPLEGL
    xGLXVendorPrivateWithReplyReq *vpreq;
    xGLXCreateGLXPixmapWithConfigSGIXReq *req;
    GLXPixmap xid = None;
    CARD8 opcode;
-   const __GLcontextModes *const fbconfig = (__GLcontextModes *) config;
    __GLXscreenConfigs *psc;
+#endif
+   const __GLcontextModes *const fbconfig = (__GLcontextModes *) config;
 
 
    if ((dpy == NULL) || (config == NULL)) {
       return None;
    }
+#ifdef GLX_USE_APPLEGL
+   if(apple_glx_pixmap_create(dpy, fbconfig->screen, pixmap, fbconfig))
+      return None;
+   return pixmap;
+#else
 
    psc = GetGLXScreenConfigs(dpy, fbconfig->screen);
    if ((psc != NULL)
@@ -2300,6 +2436,7 @@ glXCreateGLXPixmapWithConfigSGIX(Display * dpy,
    }
 
    return xid;
+#endif
 }
 
 PUBLIC GLXContext
@@ -2345,7 +2482,7 @@ glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * vis)
    return NULL;
 }
 
-
+#ifndef GLX_USE_APPLEGL
 /*
 ** GLX_SGIX_swap_group
 */
@@ -2420,7 +2557,7 @@ __glXGetSyncValuesOML(Display * dpy, GLXDrawable drawable,
    return False;
 }
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 _X_HIDDEN GLboolean
 __driGetMscRateOML(__DRIdrawable * draw,
                    int32_t * numerator, int32_t * denominator, void *private)
@@ -2876,7 +3013,7 @@ __glXBindTexImageEXT(Display * dpy,
          i++;
    }
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    if (gc->driContext) {
       __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
 
@@ -2966,6 +3103,8 @@ __glXReleaseTexImageEXT(Display * dpy, GLXDrawable drawable, int buffer)
 
 /*@}*/
 
+#endif /* GLX_USE_APPLEGL */
+
 /**
  * \c strdup is actually not a standard ANSI C or POSIX routine.
  * Irix will not define it if ANSI mode is in effect.
@@ -3043,6 +3182,7 @@ static const struct name_address_pair GLX_functions[] = {
    GLX_FUNCTION(glXQueryDrawable),
    GLX_FUNCTION(glXSelectEvent),
 
+#ifndef GLX_USE_APPLEGL
    /*** GLX_SGI_swap_control ***/
    GLX_FUNCTION2(glXSwapIntervalSGI, __glXSwapIntervalSGI),
 
@@ -3060,6 +3200,7 @@ static const struct name_address_pair GLX_functions[] = {
    GLX_FUNCTION2(glXGetCurrentDisplayEXT, glXGetCurrentDisplay),
    GLX_FUNCTION(glXImportContextEXT),
    GLX_FUNCTION2(glXQueryContextInfoEXT, glXQueryContext),
+#endif
 
    /*** GLX_SGIX_fbconfig ***/
    GLX_FUNCTION2(glXGetFBConfigAttribSGIX, glXGetFBConfigAttrib),
@@ -3069,6 +3210,7 @@ static const struct name_address_pair GLX_functions[] = {
    GLX_FUNCTION2(glXGetVisualFromFBConfigSGIX, glXGetVisualFromFBConfig),
    GLX_FUNCTION(glXGetFBConfigFromVisualSGIX),
 
+#ifndef GLX_USE_APPLEGL
    /*** GLX_SGIX_pbuffer ***/
    GLX_FUNCTION(glXCreateGLXPbufferSGIX),
    GLX_FUNCTION(glXDestroyGLXPbufferSGIX),
@@ -3106,6 +3248,7 @@ static const struct name_address_pair GLX_functions[] = {
    GLX_FUNCTION2(glXEndFrameTrackingMESA, __glXEndFrameTrackingMESA),
    GLX_FUNCTION2(glXGetFrameUsageMESA, __glXGetFrameUsageMESA),
    GLX_FUNCTION2(glXQueryFrameTrackingMESA, __glXQueryFrameTrackingMESA),
+#endif
 
    /*** GLX_ARB_get_proc_address ***/
    GLX_FUNCTION(glXGetProcAddressARB),
@@ -3113,6 +3256,7 @@ static const struct name_address_pair GLX_functions[] = {
    /*** GLX 1.4 ***/
    GLX_FUNCTION2(glXGetProcAddress, glXGetProcAddressARB),
 
+#ifndef GLX_USE_APPLEGL
    /*** GLX_OML_sync_control ***/
    GLX_FUNCTION2(glXWaitForSbcOML, __glXWaitForSbcOML),
    GLX_FUNCTION2(glXWaitForMscOML, __glXWaitForMscOML),
@@ -3123,8 +3267,9 @@ static const struct name_address_pair GLX_functions[] = {
    /*** GLX_EXT_texture_from_pixmap ***/
    GLX_FUNCTION2(glXBindTexImageEXT, __glXBindTexImageEXT),
    GLX_FUNCTION2(glXReleaseTexImageEXT, __glXReleaseTexImageEXT),
+#endif
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    /*** DRI configuration ***/
    GLX_FUNCTION(glXGetScreenDriver),
    GLX_FUNCTION(glXGetDriverConfig),
@@ -3133,7 +3278,7 @@ static const struct name_address_pair GLX_functions[] = {
    {NULL, NULL}                 /* end of list */
 };
 
-
+#ifndef GLX_USE_APPLEGL
 static const GLvoid *
 get_glx_proc_address(const char *funcName)
 {
@@ -3147,7 +3292,7 @@ get_glx_proc_address(const char *funcName)
 
    return NULL;
 }
-
+#endif
 
 /**
  * Get the address of a named GL function.  This is the pre-GLX 1.4 name for
@@ -3170,13 +3315,15 @@ PUBLIC void (*glXGetProcAddressARB(const GLubyte * procName)) (void)
     * DRI based drivers from searching the core GL function table for
     * internal API functions.
     */
-
+#ifdef GLX_USE_APPLEGL
+   f = (gl_function) apple_glx_get_proc_address(procName);
+#else
    f = (gl_function) get_glx_proc_address((const char *) procName);
    if ((f == NULL) && (procName[0] == 'g') && (procName[1] == 'l')
        && (procName[2] != 'X')) {
       f = (gl_function) _glapi_get_proc_address((const char *) procName);
    }
-
+#endif
    return f;
 }
 
@@ -3199,7 +3346,7 @@ PUBLIC void (*glXGetProcAddress(const GLubyte * procName)) (void)
 #endif /* __GNUC__ */
 
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 /**
  * Get the unadjusted system time (UST).  Currently, the UST is measured in
  * microseconds since Epoc.  The actual resolution of the UST may vary from
index c28360bdde94ad3deffea14f232d4dd4306008ed..691e8dfadf2ca1ceaba5eb895794220cab51ba6d 100644 (file)
  * Client-side GLX interface for current context management.
  */
 
+#ifdef PTHREADS
+#include <pthread.h>
+#endif
+
 #include "glxclient.h"
+#ifdef GLX_USE_APPLEGL
+#include <stdlib.h>
+
+#include "apple_glx.h"
+#include "apple_glx_context.h"
+#else
 #include "glapi.h"
 #include "indirect_init.h"
+#endif
 
 /*
 ** We setup some dummy structures here so that the API can be used
@@ -59,11 +70,12 @@ static __GLXcontext dummyContext = {
 };
 
 
+#ifndef GLX_USE_APPLEGL
 /*
 ** All indirect rendering contexts will share the same indirect dispatch table.
 */
 static __GLapi *IndirectAPI = NULL;
-
+#endif
 
 /*
  * Current context management and locking
@@ -156,10 +168,12 @@ _X_HIDDEN void
 __glXSetCurrentContextNull(void)
 {
    __glXSetCurrentContext(&dummyContext);
-#ifdef GLX_DIRECT_RENDERING
+#ifndef GLX_USE_APPLEGL
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    _glapi_set_dispatch(NULL);   /* no-op functions */
    _glapi_set_context(NULL);
 #endif
+#endif
 }
 
 
@@ -186,6 +200,7 @@ glXGetCurrentDrawable(void)
 }
 
 
+#ifndef GLX_USE_APPLEGL
 /************************************************************************/
 
 /**
@@ -269,7 +284,7 @@ SendMakeCurrentRequest(Display * dpy, CARD8 opcode,
 }
 
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
 static __GLXDRIdrawable *
 FetchDRIDrawable(Display * dpy, GLXDrawable glxDrawable, GLXContext gc)
 {
@@ -313,6 +328,8 @@ __glXGenerateError(Display * dpy, GLXContext gc, XID resource,
    _XError(dpy, &error);
 }
 
+#endif /* GLX_USE_APPLEGL */
+
 /**
  * Make a particular context current.
  *
@@ -322,8 +339,17 @@ static Bool
 MakeContextCurrent(Display * dpy, GLXDrawable draw,
                    GLXDrawable read, GLXContext gc)
 {
-   xGLXMakeCurrentReply reply;
    const GLXContext oldGC = __glXGetCurrentContext();
+#ifdef GLX_USE_APPLEGL
+   bool error = apple_glx_make_current_context(dpy, 
+                   (oldGC && oldGC != &dummyContext) ? oldGC->driContext : NULL, 
+                   gc ? gc->driContext : NULL, draw);
+   
+   apple_glx_diagnostic("%s: error %s\n", __func__, error ? "YES" : "NO");
+   if(error)
+      return GL_FALSE;
+#else
+   xGLXMakeCurrentReply reply;
    const CARD8 opcode = __glXSetupForCommand(dpy);
    const CARD8 oldOpcode = ((gc == oldGC) || (oldGC == &dummyContext))
       ? opcode : __glXSetupForCommand(oldGC->currentDpy);
@@ -360,7 +386,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
       return False;
    }
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    /* Bind the direct rendering context to the drawable */
    if (gc && gc->driContext) {
       __GLXDRIdrawable *pdraw = FetchDRIDrawable(dpy, draw, gc);
@@ -395,7 +421,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
       return False;
    }
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    if ((dpy != oldGC->currentDpy || (gc && gc->driContext)) &&
        !oldGC->isDirect && oldGC != &dummyContext) {
 #else
@@ -413,12 +439,13 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
                                     oldGC->currentContextTag, None, None,
                                     &dummy_reply);
    }
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    else if (oldGC->driContext && oldGC != gc) {
       oldGC->driContext->unbindContext(oldGC->driContext);
    }
 #endif
 
+#endif /* GLX_USE_APPLEGL */
 
    /* Update our notion of what is current */
    __glXLock();
@@ -428,8 +455,10 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
        * cannot be NULL, therefore if they are the same, gc is not
        * NULL and not the dummy.
        */
-      gc->currentDrawable = draw;
-      gc->currentReadable = read;
+      if(gc) {
+        gc->currentDrawable = draw;
+        gc->currentReadable = read;
+      }
    }
    else {
       if (oldGC != &dummyContext) {
@@ -439,13 +468,24 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
          oldGC->currentReadable = None;
          oldGC->currentContextTag = 0;
          oldGC->thread_id = 0;
-
+#ifdef GLX_USE_APPLEGL
+         
+         /*
+          * At this point we should check if the context has been
+          * through glXDestroyContext, and redestroy it if so.
+          */
+         if(oldGC->do_destroy) {
+            __glXUnlock();
+            /* glXDestroyContext uses the same global lock. */
+            glXDestroyContext(dpy, oldGC);
+            __glXLock();
+#else
          if (oldGC->xid == None) {
             /* We are switching away from a context that was
              * previously destroyed, so we need to free the memory
              * for the old handle.
              */
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
             /* Destroy the old direct rendering context */
             if (oldGC->driContext) {
                oldGC->driContext->destroyContext(oldGC->driContext,
@@ -455,6 +495,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
             }
 #endif
             __glXFreeContext(oldGC);
+#endif /* GLX_USE_APPLEGL */
          }
       }
       if (gc) {
@@ -463,9 +504,10 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
          gc->currentDpy = dpy;
          gc->currentDrawable = draw;
          gc->currentReadable = read;
+#ifndef GLX_USE_APPLEGL
          gc->thread_id = _glthread_GetID();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
          if (!gc->driContext) {
 #endif
             if (!IndirectAPI)
@@ -480,12 +522,13 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
                (void) glGetString(GL_VERSION);
                __glXInitVertexArrayState(gc);
             }
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
          }
          else {
             gc->currentContextTag = -1;
          }
 #endif
+#endif /* GLX_USE_APPLEGL */
       }
       else {
          __glXSetCurrentContextNull();
index 5289354a521233673a20d12688770d5a9807b4cb..82d3a56f37d333865b1fa23e92c78f702bfb3aa2 100644 (file)
 #include <X11/extensions/Xext.h>
 #include <X11/extensions/extutil.h>
 #include <X11/extensions/dri2proto.h>
+#ifdef GLX_USE_APPLEGL
+#include "apple_glx.h"
+#include "apple_visual.h"
+#endif
 #include "glxextensions.h"
 #include "glcontextmodes.h"
 
@@ -65,7 +69,12 @@ _X_HIDDEN int __glXDebug = 0;
 /* Extension required boiler plate */
 
 static char *__glXExtensionName = GLX_EXTENSION_NAME;
+#ifdef GLX_USE_APPLEGL
+static XExtensionInfo __glXExtensionInfo_data;
+XExtensionInfo *__glXExtensionInfo = &__glXExtensionInfo_data;
+#else
 XExtensionInfo *__glXExtensionInfo = NULL;
+#endif
 
 static /* const */ char *error_list[] = {
    "GLXBadContext",
@@ -98,6 +107,11 @@ __glXCloseDisplay(Display * dpy, XExtCodes * codes)
 }
 
 
+#ifdef GLX_USE_APPLEGL
+static char *__glXErrorString(Display *dpy, int code, XExtCodes *codes, 
+                              char *buf, int n);
+#endif
+
 static
 XEXT_GENERATE_ERROR_STRING(__glXErrorString, __glXExtensionName,
                            __GLX_NUMBER_ERRORS, error_list)
@@ -245,7 +259,7 @@ FreeScreenConfigs(__GLXdisplayPrivate * priv)
       }
       Xfree((char *) psc->serverGLXexts);
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
       if (psc->driver_configs) {
          unsigned int j;
          for (j = 0; psc->driver_configs[j]; j++)
@@ -285,7 +299,7 @@ __glXFreeDisplayPrivate(XExtData * extension)
       priv->serverGLXversion = 0x0;     /* to protect against double free's */
    }
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    /* Free the direct rendering per display data */
    if (priv->driswDisplay)
       (*priv->driswDisplay->destroyDisplay) (priv->driswDisplay);
@@ -358,7 +372,20 @@ QueryVersion(Display * dpy, int opcode, int *major, int *minor)
 #endif /* USE_XCB */
 }
 
+/* 
+ * We don't want to enable this GLX_OML_swap_method in glxext.h, 
+ * because we can't support it.  The X server writes it out though,
+ * so we should handle it somehow, to avoid false warnings.
+ */
+enum {
+    IGNORE_GLX_SWAP_METHOD_OML = 0x8060
+};
+
 
+/*
+ * getVisualConfigs uses the !tagged_only path.
+ * getFBConfigs uses the tagged_only path.
+ */
 _X_HIDDEN void
 __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
                                     const INT32 * bp, Bool tagged_only,
@@ -392,7 +419,14 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
       config->numAuxBuffers = *bp++;
       config->level = *bp++;
 
+#ifdef GLX_USE_APPLEGL
+       /* AppleSGLX supports pixmap and pbuffers with all config. */
+       config->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT;
+       /* Unfortunately this can create an ABI compatibility problem. */
+       count -= 18;
+#else
       count -= __GLX_MIN_CONFIG_PROPS;
+#endif
    }
 
    /*
@@ -405,7 +439,9 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
     config-> tag = ( fbconfig_style_tags ) ? *bp++ : 1
 
    for (i = 0; i < count; i += 2) {
-      switch (*bp++) {
+      long int tag = *bp++;
+      
+      switch (tag) {
       case GLX_RGBA:
          FETCH_OR_SET(rgbMode);
          break;
@@ -483,6 +519,10 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
          break;
       case GLX_DRAWABLE_TYPE:
          config->drawableType = *bp++;
+#ifdef GLX_USE_APPLEGL
+         /* AppleSGLX supports pixmap and pbuffers with all config. */
+         config->drawableType |= GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT;              
+#endif
          break;
       case GLX_RENDER_TYPE:
          config->renderType = *bp++;
@@ -502,6 +542,7 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
       case GLX_MAX_PBUFFER_PIXELS:
          config->maxPbufferPixels = *bp++;
          break;
+#ifndef GLX_USE_APPLEGL
       case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX:
          config->optimalPbufferWidth = *bp++;
          break;
@@ -514,12 +555,19 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
       case GLX_SWAP_METHOD_OML:
          config->swapMethod = *bp++;
          break;
+#endif
       case GLX_SAMPLE_BUFFERS_SGIS:
          config->sampleBuffers = *bp++;
          break;
       case GLX_SAMPLES_SGIS:
          config->samples = *bp++;
          break;
+#ifdef GLX_USE_APPLEGL
+      case IGNORE_GLX_SWAP_METHOD_OML:
+         /* We ignore this tag.  See the comment above this function. */
+         ++bp;
+         break;
+#else
       case GLX_BIND_TO_TEXTURE_RGB_EXT:
          config->bindToTextureRgb = *bp++;
          break;
@@ -535,11 +583,21 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
       case GLX_Y_INVERTED_EXT:
          config->yInverted = *bp++;
          break;
+#endif
       case None:
          i = count;
          break;
       default:
-         break;
+         if(getenv("LIBGL_DIAGNOSTIC")) {
+             long int tagvalue = *bp++;
+             fprintf(stderr, "WARNING: unknown GLX tag from server: "
+                     "tag 0x%lx value 0x%lx\n", tag, tagvalue);
+         } else {
+             /* Ignore the unrecognized tag's value */
+             bp++;
+             break;
+         }
+              break;
       }
    }
 
@@ -587,9 +645,18 @@ createConfigsFromProperties(Display * dpy, int nvisuals, int nprops,
    m = modes;
    for (i = 0; i < nvisuals; i++) {
       _XRead(dpy, (char *) props, prop_size);
-      /* Older X servers don't send this so we default it here. */
+#ifdef GLX_USE_APPLEGL
+       /* Older X servers don't send this so we default it here. */
       m->drawableType = GLX_WINDOW_BIT;
-      __glXInitializeVisualConfigFromTags(m, nprops, props,
+#else
+      /* 
+       * The XQuartz 2.3.2.1 X server doesn't set this properly, so
+       * set the proper bits here.
+       * AppleSGLX supports windows, pixmaps, and pbuffers with all config.
+       */
+      m->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT;
+#endif
+       __glXInitializeVisualConfigFromTags(m, nprops, props,
                                           tagged_only, GL_TRUE);
       m->screen = screen;
       m = m->next;
@@ -710,7 +777,7 @@ AllocAndFetchScreenConfigs(Display * dpy, __GLXdisplayPrivate * priv)
       getVisualConfigs(dpy, priv, i);
       getFBConfigs(dpy, priv, i);
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
       psc->scr = i;
       psc->dpy = dpy;
       psc->drawHash = __glxHashCreate();
@@ -750,7 +817,7 @@ __glXInitialize(Display * dpy)
    __GLXdisplayPrivate *dpyPriv;
    XEDataObject dataObj;
    int major, minor;
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    Bool glx_direct, glx_accel;
 #endif
 
@@ -807,7 +874,7 @@ __glXInitialize(Display * dpy)
    dpyPriv->serverGLXvendor = 0x0;
    dpyPriv->serverGLXversion = 0x0;
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    glx_direct = (getenv("LIBGL_ALWAYS_INDIRECT") == NULL);
    glx_accel = (getenv("LIBGL_ALWAYS_SOFTWARE") == NULL);
 
@@ -823,8 +890,11 @@ __glXInitialize(Display * dpy)
    if (glx_direct)
       dpyPriv->driswDisplay = driswCreateDisplay(dpy);
 #endif
-
+#ifdef GLX_USE_APPLEGL
+   if (apple_init_glx(dpy) || !AllocAndFetchScreenConfigs(dpy, dpyPriv)) {
+#else
    if (!AllocAndFetchScreenConfigs(dpy, dpyPriv)) {
+#endif
       __glXUnlock();
       Xfree((char *) dpyPriv);
       Xfree((char *) private);
index 56c69cbfcbab83cedeffe9e135fc86aedf03cbeb..e58c296b30945283742e27cecd0001c5bd59d909 100644 (file)
@@ -75,34 +75,72 @@ static const struct extension_info known_glx_extensions[] = {
    { GLX(ARB_multisample),             VER(1,4), Y, Y, N, N },
    { GLX(ARB_render_texture),          VER(0,0), N, N, N, N },
    { GLX(ATI_pixel_format_float),      VER(0,0), N, N, N, N },
+#ifdef GLX_USE_APPLEGL
+   { GLX(EXT_import_context),          VER(0,0), N, N, N, N },
+   { GLX(EXT_visual_info),             VER(0,0), N, N, N, N },
+#else
    { GLX(EXT_import_context),          VER(0,0), Y, Y, N, N },
    { GLX(EXT_visual_info),             VER(0,0), Y, Y, N, N },
+#endif
    { GLX(EXT_visual_rating),           VER(0,0), Y, Y, N, N },
+#ifdef GLX_USE_APPLEGL
+   { GLX(MESA_agp_offset),             VER(0,0), N, N, N, N }, /* Deprecated */
+   { GLX(MESA_allocate_memory),        VER(0,0), N, N, N, N },
+   { GLX(MESA_copy_sub_buffer),        VER(0,0), N, N, N, N },
+#else
    { GLX(MESA_agp_offset),             VER(0,0), N, N, N, Y }, /* Deprecated */
    { GLX(MESA_allocate_memory),        VER(0,0), Y, N, N, Y },
    { GLX(MESA_copy_sub_buffer),        VER(0,0), Y, N, N, N },
+#endif
    { GLX(MESA_pixmap_colormap),        VER(0,0), N, N, N, N }, /* Deprecated */
    { GLX(MESA_release_buffers),        VER(0,0), N, N, N, N }, /* Deprecated */
+#ifdef GLX_USE_APPLEGL
+   { GLX(MESA_swap_control),           VER(0,0), N, N, N, N },
+   { GLX(MESA_swap_frame_usage),       VER(0,0), N, N, N, N },
+#else
    { GLX(MESA_swap_control),           VER(0,0), Y, N, N, Y },
    { GLX(MESA_swap_frame_usage),       VER(0,0), Y, N, N, Y },
+#endif
    { GLX(NV_float_buffer),             VER(0,0), N, N, N, N },
    { GLX(NV_render_depth_texture),     VER(0,0), N, N, N, N },
    { GLX(NV_render_texture_rectangle), VER(0,0), N, N, N, N },
+#ifdef GLX_USE_APPLEGL
+   { GLX(NV_vertex_array_range),       VER(0,0), N, N, N, N }, /* Deprecated */
+   { GLX(OML_swap_method),             VER(0,0), N, N, N, N },
+   { GLX(OML_sync_control),            VER(0,0), N, N, N, N },
+   { GLX(SGI_make_current_read),       VER(1,3), N, N, N, N },
+   { GLX(SGI_swap_control),            VER(0,0), N, N, N, N },
+   { GLX(SGI_video_sync),              VER(0,0), N, N, N, N },
+#else
    { GLX(NV_vertex_array_range),       VER(0,0), N, N, N, Y }, /* Deprecated */
    { GLX(OML_swap_method),             VER(0,0), Y, Y, N, N },
    { GLX(OML_sync_control),            VER(0,0), Y, N, N, Y },
    { GLX(SGI_make_current_read),       VER(1,3), Y, N, N, N },
    { GLX(SGI_swap_control),            VER(0,0), Y, N, N, N },
    { GLX(SGI_video_sync),              VER(0,0), Y, N, N, Y },
+#endif
    { GLX(SGIS_blended_overlay),        VER(0,0), N, N, N, N },
    { GLX(SGIS_color_range),            VER(0,0), N, N, N, N },
+#ifdef GLX_USE_APPLEGL
+   { GLX(SGIS_multisample),            VER(0,0), N, N, N, N },
+#else
    { GLX(SGIS_multisample),            VER(0,0), Y, Y, N, N },
+#endif
    { GLX(SGIX_fbconfig),               VER(1,3), Y, Y, N, N },
+#ifdef GLX_USE_APPLEGL
+   { GLX(SGIX_pbuffer),                VER(1,3), N, N, N, N },
+#else
    { GLX(SGIX_pbuffer),                VER(1,3), Y, Y, N, N },
+#endif
    { GLX(SGIX_swap_barrier),           VER(0,0), N, N, N, N },
    { GLX(SGIX_swap_group),             VER(0,0), N, N, N, N },
+#ifdef GLX_USE_APPLEGL
+   { GLX(SGIX_visual_select_group),    VER(0,0), N, N, N, N },
+   { GLX(EXT_texture_from_pixmap),     VER(0,0), N, N, N, N },
+#else
    { GLX(SGIX_visual_select_group),    VER(0,0), Y, Y, N, N },
    { GLX(EXT_texture_from_pixmap),     VER(0,0), Y, N, N, N },
+#endif
    { GLX(INTEL_swap_event),            VER(1,4), Y, Y, N, N },
    { NULL }
 };
index 42a225f67111ec60c88224d409a16357feaf4bcf..172727860e8e72631149576bf5945a5f3127406d 100644 (file)
@@ -5198,7 +5198,7 @@ glDeleteTexturesEXT(GLsizei n, const GLuint * textures)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_DeleteTextures(GET_DISPATCH(), (n, textures));
     } else
@@ -5269,7 +5269,7 @@ glGenTexturesEXT(GLsizei n, GLuint * textures)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GenTextures(GET_DISPATCH(), (n, textures));
     } else
@@ -5334,7 +5334,7 @@ glIsTextureEXT(GLuint texture)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         return CALL_IsTexture(GET_DISPATCH(), (texture));
     } else
@@ -5650,7 +5650,7 @@ glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid * table)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetColorTable(GET_DISPATCH(), (target, format, type, table));
     } else
@@ -5726,7 +5726,7 @@ glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetColorTableParameterfv(GET_DISPATCH(),
                                       (target, pname, params));
@@ -5799,7 +5799,7 @@ glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint * params)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetColorTableParameteriv(GET_DISPATCH(),
                                       (target, pname, params));
@@ -6125,7 +6125,7 @@ gl_dispatch_stub_356(GLenum target, GLenum format, GLenum type,
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetConvolutionFilter(GET_DISPATCH(),
                                   (target, format, type, image));
@@ -6203,7 +6203,7 @@ gl_dispatch_stub_357(GLenum target, GLenum pname, GLfloat * params)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetConvolutionParameterfv(GET_DISPATCH(),
                                        (target, pname, params));
@@ -6276,7 +6276,7 @@ gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetConvolutionParameteriv(GET_DISPATCH(),
                                        (target, pname, params));
@@ -6356,7 +6356,7 @@ gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format,
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetHistogram(GET_DISPATCH(),
                           (target, reset, format, type, values));
@@ -6433,7 +6433,7 @@ gl_dispatch_stub_362(GLenum target, GLenum pname, GLfloat * params)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetHistogramParameterfv(GET_DISPATCH(), (target, pname, params));
     } else
@@ -6504,7 +6504,7 @@ gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetHistogramParameteriv(GET_DISPATCH(), (target, pname, params));
     } else
@@ -6579,7 +6579,7 @@ gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format,
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetMinmax(GET_DISPATCH(), (target, reset, format, type, values));
     } else
@@ -6653,7 +6653,7 @@ gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetMinmaxParameterfv(GET_DISPATCH(), (target, pname, params));
     } else
@@ -6721,7 +6721,7 @@ gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params)
 {
     __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
     if (gc->driContext) {
         CALL_GetMinmaxParameteriv(GET_DISPATCH(), (target, pname, params));
     } else
index 0c136d26cdd2ceac5a661f57683e596c5e0acdbb..411a0e42c55e3fa96254657e2c942571f2f62c51 100644 (file)
@@ -48,7 +48,7 @@
 #  endif
 
 
-#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__APPLE__)
+#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(GLX_USE_APPLEGL)
 #  undef HAVE_ALIAS
 #endif
 #ifdef HAVE_ALIAS
index f5ebf4dfdbf7124337f5bf6ce342c7212038fc4b..c4010d79bd09ee6fcb7db4c04c38ba2921cfe3f1 100644 (file)
@@ -119,7 +119,7 @@ void NAME(_gloffset_GetSeparableFilter) (GLenum target, GLenum format,
 {
    __GLXcontext *const gc = __glXGetCurrentContext();
 
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
    if (gc->driContext) {
       CALL_GetSeparableFilter(GET_DISPATCH(),
                               (target, format, type, row, column, span));
index 84a2a5fcb3a01f7fb9f12392eaa99e85e1718d7e..ea9e4173916d2ab31ef53066e4919b789ad5451a 100644 (file)
@@ -424,6 +424,7 @@ _mesa_meta_begin(GLcontext *ctx, GLbitfield state)
 
    if (state & META_SCISSOR) {
       save->Scissor = ctx->Scissor; /* struct copy */
+      _mesa_set_enable(ctx, GL_SCISSOR_TEST, GL_FALSE);
    }
 
    if (state & META_SHADER) {
@@ -1117,8 +1118,10 @@ blitframebuffer_texture(GLcontext *ctx,
          _mesa_BindTexture(target, texObj->Name);
          _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, filter);
          _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, filter);
-         _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, srcLevel);
-         _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, srcLevel);
+         if (target != GL_TEXTURE_RECTANGLE_ARB) {
+            _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, srcLevel);
+            _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, srcLevel);
+         }
          _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
          _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
          _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
@@ -1176,8 +1179,10 @@ blitframebuffer_texture(GLcontext *ctx,
           */
          _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, minFilterSave);
          _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, magFilterSave);
-         _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, baseLevelSave);
-         _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave);
+         if (target != GL_TEXTURE_RECTANGLE_ARB) {
+            _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, baseLevelSave);
+            _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave);
+         }
          _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, wrapSSave);
          _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, wrapTSave);
 
index e08005f90b9a198c5d6b950fe57db9a07bc27fac..360c5247548583ce1b4458e27cb5302b539bb58e 100644 (file)
 #include "dri_util.h"
 #include "drm_sarea.h"
 #include "utils.h"
+#include "xmlpool.h"
+
+PUBLIC const char __dri2ConfigOptions[] =
+   DRI_CONF_BEGIN
+      DRI_CONF_SECTION_PERFORMANCE
+         DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_1)
+      DRI_CONF_SECTION_END
+   DRI_CONF_END;
+
+static const uint __dri2NConfigOptions = 1;
 
 #ifndef GLX_OML_sync_control
 typedef GLboolean ( * PFNGLXGETMSCRATEOMLPROC) (__DRIdrawable *drawable, int32_t *numerator, int32_t *denominator);
@@ -143,19 +153,24 @@ static int driBindContext(__DRIcontext *pcp,
 {
     __DRIscreen *psp = NULL;
 
-    /* Bind the drawable to the context */
+    /*
+    ** Assume error checking is done properly in glXMakeCurrent before
+    ** calling driUnbindContext.
+    */
 
-    if (pcp) {
-       psp = pcp->driScreenPriv;
-       pcp->driDrawablePriv = pdp;
-       pcp->driReadablePriv = prp;
-       if (pdp) {
-           pdp->driContextPriv = pcp;
-           dri_get_drawable(pdp);
-       }
-       if ( prp && pdp != prp ) {
-           dri_get_drawable(prp);
-       }
+    if (!pcp)
+       return GL_FALSE;
+
+    /* Bind the drawable to the context */
+    psp = pcp->driScreenPriv;
+    pcp->driDrawablePriv = pdp;
+    pcp->driReadablePriv = prp;
+    if (pdp) {
+       pdp->driContextPriv = pcp;
+       dri_get_drawable(pdp);
+    }
+    if (prp && pdp != prp) {
+       dri_get_drawable(prp);
     }
 
     /*
@@ -163,7 +178,6 @@ static int driBindContext(__DRIcontext *pcp,
     ** initialize the drawable information if has not been done before.
     */
 
-    assert(psp);
     if (!psp->dri2.enabled) {
        if (pdp && !pdp->pStamp) {
            DRM_SPINLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID);
@@ -178,7 +192,6 @@ static int driBindContext(__DRIcontext *pcp,
     }
 
     /* Call device-specific MakeCurrent */
-
     return (*psp->DriverAPI.MakeCurrent)(pcp, pdp, prp);
 }
 
@@ -467,6 +480,41 @@ dri2CreateNewDrawable(__DRIscreen *screen,
     return pdraw;
 }
 
+static int
+dri2ConfigQueryb(__DRIscreen *screen, const char *var, GLboolean *val)
+{
+   if (!driCheckOption(&screen->optionCache, var, DRI_BOOL))
+      return -1;
+
+   *val = driQueryOptionb(&screen->optionCache, var);
+
+   return 0;
+}
+
+static int
+dri2ConfigQueryi(__DRIscreen *screen, const char *var, GLint *val)
+{
+   if (!driCheckOption(&screen->optionCache, var, DRI_INT) &&
+       !driCheckOption(&screen->optionCache, var, DRI_ENUM))
+      return -1;
+
+    *val = driQueryOptioni(&screen->optionCache, var);
+
+    return 0;
+}
+
+static int
+dri2ConfigQueryf(__DRIscreen *screen, const char *var, GLfloat *val)
+{
+   if (!driCheckOption(&screen->optionCache, var, DRI_FLOAT))
+      return -1;
+
+    *val = driQueryOptionf(&screen->optionCache, var);
+
+    return 0;
+}
+
+
 static void dri_get_drawable(__DRIdrawable *pdp)
 {
     pdp->refcount++;
@@ -788,6 +836,7 @@ dri2CreateNewScreen(int scrn, int fd,
     static const __DRIextension *emptyExtensionList[] = { NULL };
     __DRIscreen *psp;
     drmVersionPtr version;
+    driOptionCache options;
 
     if (driDriverAPI.InitScreen2 == NULL)
         return NULL;
@@ -821,6 +870,9 @@ dri2CreateNewScreen(int scrn, int fd,
 
     psp->DriverAPI = driDriverAPI;
 
+    driParseOptionInfo(&options, __dri2ConfigOptions, __dri2NConfigOptions);
+    driParseConfigFiles(&psp->optionCache, &options, psp->myNum, "dri2");
+
     return psp;
 }
 
@@ -865,6 +917,13 @@ const __DRIdri2Extension driDRI2Extension = {
     dri2CreateNewContextForAPI
 };
 
+const __DRI2configQueryExtension dri2ConfigQueryExtension = {
+   { __DRI2_CONFIG_QUERY, __DRI2_CONFIG_QUERY_VERSION },
+   dri2ConfigQueryb,
+   dri2ConfigQueryi,
+   dri2ConfigQueryf,
+};
+
 static int
 driFrameTracking(__DRIdrawable *drawable, GLboolean enable)
 {
index 4b7cd414b8f7896e451d60e41d6a02b2f4c0e63e..ab6c6e57afc1d6f9e007d873dc9c40d85f6ee44b 100644 (file)
@@ -51,6 +51,7 @@
 #include <drm.h>
 #include <drm_sarea.h>
 #include <xf86drm.h>
+#include "xmlconfig.h"
 #include "main/glheader.h"
 #include "main/mtypes.h"
 #include "GL/internal/glcore.h"
@@ -71,6 +72,7 @@ extern const __DRIcopySubBufferExtension driCopySubBufferExtension;
 extern const __DRIswapControlExtension driSwapControlExtension;
 extern const __DRIframeTrackingExtension driFrameTrackingExtension;
 extern const __DRImediaStreamCounterExtension driMediaStreamCounterExtension;
+extern const __DRI2configQueryExtension dri2ConfigQueryExtension;
 
 /**
  * Used by DRI_VALIDATE_DRAWABLE_INFO
@@ -530,6 +532,7 @@ struct __DRIscreenRec {
     /* The lock actually in use, old sarea or DRI2 */
     drmLock *lock;
 
+    driOptionCache optionCache;
    unsigned int api_mask;
 };
 
index 9f12e2c632ef63cc9eb7213a62c1f4d7084f3a7e..e60157f37772a9d4d0c91aad2d3f5b83c485eb64 100644 (file)
@@ -359,9 +359,10 @@ upload_program(struct i915_fragment_program *p)
    }
 
    if (program->Base.NumInstructions > I915_MAX_INSN) {
-       i915_program_error( p, "Exceeded max instructions" );
-       return;
-    }
+      i915_program_error(p, "Exceeded max instructions (%d out of %d)",
+                        program->Base.NumInstructions, I915_MAX_INSN);
+      return;
+   }
 
    /* Not always needed:
     */
@@ -1099,12 +1100,23 @@ translate_program(struct i915_fragment_program *p)
 {
    struct i915_context *i915 = I915_CONTEXT(p->ctx);
 
+   if (INTEL_DEBUG & DEBUG_WM) {
+      printf("fp:\n");
+      _mesa_print_program(&p->ctx->FragmentProgram._Current->Base);
+      printf("\n");
+   }
+
    i915_init_program(i915, p);
    check_wpos(p);
    upload_program(p);
    fixup_depth_write(p);
    i915_fini_program(p);
 
+   if (INTEL_DEBUG & DEBUG_WM) {
+      printf("i915:\n");
+      i915_disassemble_program(i915->state.Program, i915->state.ProgramSize);
+   }
+
    p->translated = 1;
 }
 
index 3902c6909709004ae7c477ae86466647f5326269..670c7137850989deb028220f94c23cf4e5a43deb 100644 (file)
@@ -494,17 +494,25 @@ i915_fini_program(struct i915_fragment_program *p)
    GLuint program_size = p->csr - p->program;
    GLuint decl_size = p->decl - p->declarations;
 
-   if (p->nr_tex_indirect > I915_MAX_TEX_INDIRECT)
-      i915_program_error(p, "Exceeded max nr indirect texture lookups");
+   if (p->nr_tex_indirect > I915_MAX_TEX_INDIRECT) {
+      i915_program_error(p, "Exceeded max nr indirect texture lookups "
+                        "(%d out of %d)",
+                        p->nr_tex_indirect, I915_MAX_TEX_INDIRECT);
+   }
 
-   if (p->nr_tex_insn > I915_MAX_TEX_INSN)
-      i915_program_error(p, "Exceeded max TEX instructions");
+   if (p->nr_tex_insn > I915_MAX_TEX_INSN) {
+      i915_program_error(p, "Exceeded max TEX instructions (%d out of %d)",
+                        p->nr_tex_insn, I915_MAX_TEX_INSN);
+   }
 
    if (p->nr_alu_insn > I915_MAX_ALU_INSN)
-      i915_program_error(p, "Exceeded max ALU instructions");
+      i915_program_error(p, "Exceeded max ALU instructions (%d out of %d)",
+                        p->nr_alu_insn, I915_MAX_ALU_INSN);
 
-   if (p->nr_decl_insn > I915_MAX_DECL_INSN)
-      i915_program_error(p, "Exceeded max DECL instructions");
+   if (p->nr_decl_insn > I915_MAX_DECL_INSN) {
+      i915_program_error(p, "Exceeded max DECL instructions (%d out of %d)",
+                        p->nr_decl_insn, I915_MAX_DECL_INSN);
+   }
 
    if (p->error) {
       p->FragProg.Base.NumNativeInstructions = 0;
index af9c7ee9b6fa1d607233fe1ed0090f33a343cb92..6e4512129cd1c87628ec7a13a1dfc15cc91c9671 100644 (file)
@@ -483,7 +483,7 @@ i945_miptree_layout(struct intel_context *intel, struct intel_mipmap_tree * mt,
    case GL_TEXTURE_1D:
    case GL_TEXTURE_2D:
    case GL_TEXTURE_RECTANGLE_ARB:
-      i945_miptree_layout_2d(intel, mt, tiling);
+      i945_miptree_layout_2d(intel, mt, tiling, 1);
       break;
    default:
       _mesa_problem(NULL, "Unexpected tex target in i945_miptree_layout()");
index 1fd957b3ad66ad55b6475f54e7ae170de4c9a120..41a1f438df4b3dd08cf3fb4a1b7c4236b99e677a 100644 (file)
@@ -34,6 +34,7 @@
 #include "shader/prog_parameter.h"
 #include "shader/program.h"
 #include "shader/programopt.h"
+#include "shader/shader_api.h"
 #include "tnl/tnl.h"
 
 #include "brw_context.h"
@@ -119,12 +120,28 @@ static GLboolean brwIsProgramNative( GLcontext *ctx,
    return GL_TRUE;
 }
 
+static void
+shader_error(GLcontext *ctx, struct gl_program *prog, const char *msg)
+{
+   struct gl_shader_program *shader;
+
+   shader = _mesa_lookup_shader_program(ctx, prog->Id);
+
+   if (shader) {
+      if (shader->InfoLog) {
+        free(shader->InfoLog);
+      }
+      shader->InfoLog = _mesa_strdup(msg);
+      shader->LinkStatus = GL_FALSE;
+   }
+}
 
 static GLboolean brwProgramStringNotify( GLcontext *ctx,
                                          GLenum target,
                                          struct gl_program *prog )
 {
    struct brw_context *brw = brw_context(ctx);
+   int i;
 
    if (target == GL_FRAGMENT_PROGRAM_ARB) {
       struct gl_fragment_program *fprog = (struct gl_fragment_program *) prog;
@@ -160,7 +177,22 @@ static GLboolean brwProgramStringNotify( GLcontext *ctx,
       _tnl_program_string(ctx, target, prog);
    }
 
-   /* XXX check if program is legal, within limits */
+   /* Reject programs with subroutines, which are totally broken at the moment
+    * (all program flows return when any program flow returns, and
+    * the VS also hangs if a function call calls a function.
+    *
+    * See piglit glsl-{vs,fs}-functions-[23] tests.
+    */
+   for (i = 0; i < prog->NumInstructions; i++) {
+      if (prog->Instructions[i].Opcode == OPCODE_CAL) {
+        shader_error(ctx, prog,
+                     "i965 driver doesn't yet support uninlined function "
+                     "calls.  Move to using a single return statement at "
+                     "the end of the function to work around it.");
+        return GL_FALSE;
+      }
+   }
+
    return GL_TRUE;
 }
 
index 9712c31afeadda8864ab980424ac0e013d075ae0..1a6c8218fd1305446349085f6e549225b3d394df 100644 (file)
@@ -76,7 +76,20 @@ static void upload_sf_vp(struct brw_context *brw)
     * Note that the hardware's coordinates are inclusive, while Mesa's min is
     * inclusive but max is exclusive.
     */
-   if (render_to_fbo) {
+
+   if (ctx->DrawBuffer->_Xmin == ctx->DrawBuffer->_Xmax ||
+       ctx->DrawBuffer->_Ymin == ctx->DrawBuffer->_Ymax) {
+      /* If the scissor was out of bounds and got clamped to 0
+       * width/height at the bounds, the subtraction of 1 from
+       * maximums could produce a negative number and thus not clip
+       * anything.  Instead, just provide a min > max scissor inside
+       * the bounds, which produces the expected no rendering.
+       */
+      sfv.scissor.xmin = 1;
+      sfv.scissor.xmax = 0;
+      sfv.scissor.ymin = 1;
+      sfv.scissor.ymax = 0;
+   } else if (render_to_fbo) {
       /* texmemory: Y=0=bottom */
       sfv.scissor.xmin = ctx->DrawBuffer->_Xmin;
       sfv.scissor.xmax = ctx->DrawBuffer->_Xmax - 1;
index 9a215ab8a4da63597948233ac4f3c8b50b0fdc3b..768ccfd79c432d2bd49875fd01db1a7c3b13f99c 100644 (file)
@@ -49,74 +49,30 @@ GLboolean brw_miptree_layout(struct intel_context *intel,
    switch (mt->target) {
    case GL_TEXTURE_CUBE_MAP:
       if (intel->gen == 5) {
-          GLuint align_h = 2, align_w = 4;
+          GLuint align_h = 2;
           GLuint level;
-          GLuint x = 0;
-          GLuint y = 0;
-          GLuint width = mt->width0;
-          GLuint height = mt->height0;
           GLuint qpitch = 0;
-          GLuint y_pitch = 0;
+         int h0, h1, q;
 
-          mt->total_width = mt->width0;
-          intel_get_texture_alignment_unit(mt->internal_format, &align_w, &align_h);
-          y_pitch = ALIGN(height, align_h);
+         /* On Ironlake, cube maps are finally represented as just a series
+          * of MIPLAYOUT_BELOW 2D textures (like 2D texture arrays), separated
+          * by a pitch of qpitch rows, where qpitch is defined by the equation
+          * given in Volume 1 of the BSpec.
+          */
+         h0 = ALIGN(mt->height0, align_h);
+         h1 = ALIGN(minify(h0), align_h);
+         qpitch = (h0 + h1 + 11 * align_h);
+          if (mt->compressed)
+            qpitch /= 4;
 
-          if (mt->compressed) {
-              mt->total_width = ALIGN(mt->width0, align_w);
-          }
-
-          if (mt->first_level != mt->last_level) {
-              GLuint mip1_width;
-
-              if (mt->compressed) {
-                  mip1_width = ALIGN(minify(mt->width0), align_w)
-                      + ALIGN(minify(minify(mt->width0)), align_w);
-              } else {
-                  mip1_width = ALIGN(minify(mt->width0), align_w)
-                      + minify(minify(mt->width0));
-              }
-
-              if (mip1_width > mt->total_width) {
-                  mt->total_width = mip1_width;
-              }
-          }
-
-          if (mt->compressed) {
-              qpitch = (y_pitch + ALIGN(minify(y_pitch), align_h) + 11 * align_h) / 4;
-              mt->total_height = (y_pitch + ALIGN(minify(y_pitch), align_h) + 11 * align_h) / 4 * 6;
-          } else {
-              qpitch = (y_pitch + ALIGN(minify(y_pitch), align_h) + 11 * align_h);
-              mt->total_height = (y_pitch + ALIGN(minify(y_pitch), align_h) + 11 * align_h) * 6;
-          }
+         i945_miptree_layout_2d(intel, mt, tiling, 6);
 
           for (level = mt->first_level; level <= mt->last_level; level++) {
-              GLuint img_height;
-              GLuint nr_images = 6;
-              GLuint q = 0;
-
-              intel_miptree_set_level_info(mt, level, nr_images, x, y, width, 
-                                           height, 1);
-
-              for (q = 0; q < nr_images; q++)
-                  intel_miptree_set_image_offset(mt, level, q,
-                                                x, y + q * qpitch);
-
-              if (mt->compressed)
-                  img_height = MAX2(1, height/4);
-              else
-                  img_height = ALIGN(height, align_h);
-
-              if (level == mt->first_level + 1) {
-                  x += ALIGN(width, align_w);
-              }
-              else {
-                  y += img_height;
-              }
-
-              width  = minify(width);
-              height = minify(height);
+            for (q = 0; q < 6; q++) {
+               intel_miptree_set_image_offset(mt, level, q, 0, q * qpitch);
+            }
           }
+         mt->total_height = qpitch * 6;
 
           break;
       }
@@ -206,7 +162,7 @@ GLboolean brw_miptree_layout(struct intel_context *intel,
    }
 
    default:
-      i945_miptree_layout_2d(intel, mt, tiling);
+      i945_miptree_layout_2d(intel, mt, tiling, 1);
       break;
    }
    DBG("%s: %dx%dx%d\n", __FUNCTION__,
index eeb3f366a414c33d8c0fbb0e52f77745b16a4de5..dc6ab81c4acc3a7967c6d09358b744d290e47ef7 100644 (file)
 #include "brw_context.h"
 #include "brw_vs.h"
 
+/* Return the SrcReg index of the channels that can be immediate float operands
+ * instead of usage of PROGRAM_CONSTANT values through push/pull.
+ */
+static GLboolean
+brw_vs_arg_can_be_immediate(enum prog_opcode opcode, int arg)
+{
+   int opcode_array[] = {
+      [OPCODE_ADD] = 2,
+      [OPCODE_CMP] = 3,
+      [OPCODE_DP3] = 2,
+      [OPCODE_DP4] = 2,
+      [OPCODE_DPH] = 2,
+      [OPCODE_MAX] = 2,
+      [OPCODE_MIN] = 2,
+      [OPCODE_MUL] = 2,
+      [OPCODE_SEQ] = 2,
+      [OPCODE_SGE] = 2,
+      [OPCODE_SGT] = 2,
+      [OPCODE_SLE] = 2,
+      [OPCODE_SLT] = 2,
+      [OPCODE_SNE] = 2,
+      [OPCODE_XPD] = 2,
+   };
+
+   /* These opcodes get broken down in a way that allow two
+    * args to be immediates.
+    */
+   if (opcode == OPCODE_MAD || opcode == OPCODE_LRP) {
+      if (arg == 1 || arg == 2)
+        return GL_TRUE;
+   }
+
+   if (opcode > ARRAY_SIZE(opcode_array))
+      return GL_FALSE;
+
+   return arg == opcode_array[opcode] - 1;
+}
 
 static struct brw_reg get_tmp( struct brw_vs_compile *c )
 {
@@ -453,8 +490,8 @@ static void emit_max( struct brw_compile *p,
                      struct brw_reg arg0,
                      struct brw_reg arg1 )
 {
-   brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_L, arg0, arg1);
-   brw_SEL(p, dst, arg1, arg0);
+   brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_GE, arg0, arg1);
+   brw_SEL(p, dst, arg0, arg1);
    brw_set_predicate_control(p, BRW_PREDICATE_NONE);
 }
 
@@ -983,6 +1020,55 @@ get_src_reg( struct brw_vs_compile *c,
    const GLint index = inst->SrcReg[argIndex].Index;
    const GLboolean relAddr = inst->SrcReg[argIndex].RelAddr;
 
+   if (brw_vs_arg_can_be_immediate(inst->Opcode, argIndex)) {
+      const struct prog_src_register *src = &inst->SrcReg[argIndex];
+
+      if (src->Swizzle == MAKE_SWIZZLE4(SWIZZLE_ZERO,
+                                       SWIZZLE_ZERO,
+                                       SWIZZLE_ZERO,
+                                       SWIZZLE_ZERO)) {
+         return brw_imm_f(0.0f);
+      } else if (src->Swizzle == MAKE_SWIZZLE4(SWIZZLE_ONE,
+                                              SWIZZLE_ONE,
+                                              SWIZZLE_ONE,
+                                              SWIZZLE_ONE)) {
+        if (src->Negate)
+           return brw_imm_f(-1.0F);
+        else
+           return brw_imm_f(1.0F);
+      } else if (src->File == PROGRAM_CONSTANT) {
+        const struct gl_program_parameter_list *params;
+        float f;
+        int component = -1;
+
+        switch (src->Swizzle) {
+        case SWIZZLE_XXXX:
+           component = 0;
+           break;
+        case SWIZZLE_YYYY:
+           component = 1;
+           break;
+        case SWIZZLE_ZZZZ:
+           component = 2;
+           break;
+        case SWIZZLE_WWWW:
+           component = 3;
+           break;
+        }
+
+        if (component >= 0) {
+           params = c->vp->program.Base.Parameters;
+           f = params->ParameterValues[src->Index][component];
+
+           if (src->Abs)
+              f = fabs(f);
+           if (src->Negate)
+              f = -f;
+           return brw_imm_f(f);
+        }
+      }
+   }
+
    switch (file) {
    case PROGRAM_TEMPORARY:
    case PROGRAM_INPUT:
index d7650af3d9da634f68f1fb150a421a269b3c817b..1582ff1ab6593532e107bf51ce5ebdd7aa365733 100644 (file)
@@ -228,6 +228,8 @@ brw_wm_sampler_populate_key(struct brw_context *brw,
 {
    GLcontext *ctx = &brw->intel.ctx;
    int unit;
+   char *last_entry_end = ((char*)&key->sampler_count) + 
+      sizeof(key->sampler_count);
 
    key->sampler_count = 0;
 
@@ -240,7 +242,9 @@ brw_wm_sampler_populate_key(struct brw_context *brw,
         struct gl_texture_image *firstImage =
            texObj->Image[0][intelObj->firstLevel];
 
-        memset(entry, 0, sizeof(*entry));
+        memset(last_entry_end, 0, 
+               (char*)entry - last_entry_end + sizeof(*entry));
+        last_entry_end = ((char*)entry) + sizeof(*entry);
 
          entry->tex_target = texObj->Target;
 
@@ -280,6 +284,8 @@ brw_wm_sampler_populate_key(struct brw_context *brw,
         key->sampler_count = unit + 1;
       }
    }
+   struct wm_sampler_entry *entry = &key->sampler[key->sampler_count];
+   memset(last_entry_end, 0, (char*)entry - last_entry_end);
 }
 
 /* All samplers must be uploaded in a single contiguous array, which
index 6b9e5668862336664fd335018aada20f90177576..e51a1a0e26a8629b435040ee49cf1d5fbadad502 100644 (file)
@@ -588,7 +588,7 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
            tile_base = ((key.draw_y / 32) * (32 * pitch));
            tile_base += (key.draw_x - tile_x) / (128 / key.cpp) * 4096;
         }
-        assert(intel->is_g4x || (tile_x == 0 && tile_y == 0));
+        assert(brw->has_surface_tile_offset || (tile_x == 0 && tile_y == 0));
         assert(tile_x % 4 == 0);
         assert(tile_y % 2 == 0);
         /* Note that the low bits of these fields are missing, so
index 2b54cda66d1cc301e97323afdaaa1b53f81ec7ba..3aed253e2407aa2a7b435ab4970386aec5bf7279 100644 (file)
@@ -225,6 +225,7 @@ static const __DRIextension *intelScreenExtensions[] = {
     &intelTexBufferExtension.base,
     &intelFlushExtension.base,
     &intelImageExtension.base,
+    &dri2ConfigQueryExtension.base,
     NULL
 };
 
index d132e19e831b72b6270edf8dbe718f753a8f35cf..d39733b6c5a17e09d05f03dae0b7b9bbffd9f699 100644 (file)
@@ -63,9 +63,9 @@ void intel_get_texture_alignment_unit(GLenum internalFormat, GLuint *w, GLuint *
     }
 }
 
-void i945_miptree_layout_2d( struct intel_context *intel,
-                            struct intel_mipmap_tree *mt,
-                            uint32_t tiling )
+void i945_miptree_layout_2d(struct intel_context *intel,
+                           struct intel_mipmap_tree *mt,
+                           uint32_t tiling, int nr_images)
 {
    GLuint align_h = 2, align_w = 4;
    GLuint level;
@@ -107,7 +107,7 @@ void i945_miptree_layout_2d( struct intel_context *intel,
    for ( level = mt->first_level ; level <= mt->last_level ; level++ ) {
       GLuint img_height;
 
-      intel_miptree_set_level_info(mt, level, 1, x, y, width, 
+      intel_miptree_set_level_info(mt, level, nr_images, x, y, width,
                                   height, 1);
 
       if (mt->compressed)
index a9ac9e7eb4894863dbb3e5490d38b7b8a473fb5d..1c8c53e54597db6c58b7ae9c0b1c1b70e95f25fd 100644 (file)
@@ -40,5 +40,5 @@ static INLINE GLuint minify( GLuint d )
 
 extern void i945_miptree_layout_2d(struct intel_context *intel,
                                   struct intel_mipmap_tree *mt,
-                                  uint32_t tiling);
+                                  uint32_t tiling, int nr_images);
 extern void intel_get_texture_alignment_unit(GLenum, GLuint *, GLuint *);
index 18db12f6261159ff3c6c610290e5b0e44ef0da6e..78987f633cc8a172f6afe2c47b06a94ede49c43a 100644 (file)
@@ -236,6 +236,7 @@ static const struct __DRItexBufferExtensionRec nouveau_texbuffer_extension = {
 static const __DRIextension *nouveau_screen_extensions[] = {
     &nouveau_flush_extension.base,
     &nouveau_texbuffer_extension.base,
+    &dri2ConfigQueryExtension.base,
     NULL
 };
 
index 02ba300eb02b43ff30fdf5c6e23f6e18713ce4a9..fa33be4998993c083ee7d7b439ce7bfe3f38cebf 100644 (file)
@@ -1658,20 +1658,21 @@ void r300VapCntl(r300ContextPtr rmesa, GLuint input_count,
                                    (5 << R300_PVS_NUM_CNTLRS_SHIFT) |
                                    (5 << R300_VF_MAX_VTX_NUM_SHIFT));
 
-    if (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV515)
-       rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (2 << R300_PVS_NUM_FPUS_SHIFT);
-    else if ((rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV530) ||
-            (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV560) ||
-            (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV570))
+    if ((rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R300) ||
+       (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R350))
+       rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (4 << R300_PVS_NUM_FPUS_SHIFT);
+    else if (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV530)
        rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (5 << R300_PVS_NUM_FPUS_SHIFT);
     else if ((rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV410) ||
             (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R420))
        rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (6 << R300_PVS_NUM_FPUS_SHIFT);
     else if ((rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R520) ||
-            (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R580))
+            (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R580) ||
+            (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV560) ||
+            (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV570))
        rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (8 << R300_PVS_NUM_FPUS_SHIFT);
     else
-       rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (4 << R300_PVS_NUM_FPUS_SHIFT);
+       rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (2 << R300_PVS_NUM_FPUS_SHIFT);
 
 }
 
index 244fdc4ffbb2d31917d889302fa7135fd2231a56..172f85eb264a87100e7dcb27f4db8ad5b869694b 100644 (file)
@@ -344,6 +344,10 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
             return;
     }
 
+    /* must be 0 on r7xx */
+    if (context->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV770)
+           CLEARbit(cb_color0_info, BLEND_FLOAT32_bit);
+
     SETfield(cb_color0_info, format, CB_COLOR0_INFO__FORMAT_shift,
              CB_COLOR0_INFO__FORMAT_mask);
     SETfield(cb_color0_info, comp_swap, COMP_SWAP_shift, COMP_SWAP_mask);
index 9f8923f09dcd4cb3a764441ce1bc81840cd2142d..f4aed4e87fdd3ae992d398a96ee6d47cfcd65bde 100644 (file)
@@ -239,7 +239,7 @@ static void r600_init_vtbl(radeonContextPtr radeon)
        radeon->vtbl.emit_query_finish = r600_emit_query_finish;
        radeon->vtbl.check_blit = r600_check_blit;
        radeon->vtbl.blit = r600_blit;
-       radeon->vtbl.is_format_renderable = radeonIsFormatRenderable;
+       radeon->vtbl.is_format_renderable = r600IsFormatRenderable;
 }
 
 static void r600InitConstValues(GLcontext *ctx, radeonScreenPtr screen)
index 36a6e6e0a113c43d50c65e6955a1d3dfa6ffb2eb..41419f846015b75c4d0ef56fc1248f88fef7cabf 100644 (file)
@@ -392,6 +392,54 @@ static struct gl_texture_object *r600NewTextureObject(GLcontext * ctx,
        return &t->base;
 }
 
+unsigned r600IsFormatRenderable(gl_format mesa_format)
+{
+       switch (mesa_format) {
+       case MESA_FORMAT_RGBA8888:
+       case MESA_FORMAT_SIGNED_RGBA8888:
+       case MESA_FORMAT_RGBA8888_REV:
+       case MESA_FORMAT_SIGNED_RGBA8888_REV:
+       case MESA_FORMAT_ARGB8888:
+       case MESA_FORMAT_XRGB8888:
+       case MESA_FORMAT_ARGB8888_REV:
+       case MESA_FORMAT_XRGB8888_REV:
+       case MESA_FORMAT_RGB565:
+       case MESA_FORMAT_RGB565_REV:
+       case MESA_FORMAT_ARGB4444:
+       case MESA_FORMAT_ARGB4444_REV:
+       case MESA_FORMAT_ARGB1555:
+       case MESA_FORMAT_ARGB1555_REV:
+       case MESA_FORMAT_AL88:
+       case MESA_FORMAT_AL88_REV:
+       case MESA_FORMAT_RGB332:
+       case MESA_FORMAT_A8:
+       case MESA_FORMAT_I8:
+       case MESA_FORMAT_CI8:
+       case MESA_FORMAT_L8:
+       case MESA_FORMAT_RGBA_FLOAT32:
+       case MESA_FORMAT_RGBA_FLOAT16:
+       case MESA_FORMAT_ALPHA_FLOAT32:
+       case MESA_FORMAT_ALPHA_FLOAT16:
+       case MESA_FORMAT_LUMINANCE_FLOAT32:
+       case MESA_FORMAT_LUMINANCE_FLOAT16:
+       case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
+       case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
+       case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */
+       case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */
+       case MESA_FORMAT_X8_Z24:
+       case MESA_FORMAT_S8_Z24:
+       case MESA_FORMAT_Z24_S8:
+       case MESA_FORMAT_Z16:
+       case MESA_FORMAT_Z32:
+       case MESA_FORMAT_SRGBA8:
+       case MESA_FORMAT_SLA8:
+       case MESA_FORMAT_SL8:
+               return 1;
+       default:
+               return 0;
+       }
+}
+
 void r600InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *functions)
 {
        /* Note: we only plug in the functions we implement in the driver
index 1d75a2ecd69cce309310bc2555785ceb3472565b..771affdfa609e95956445e1f41f291c8f96587f4 100644 (file)
@@ -60,4 +60,6 @@ extern GLboolean r600ValidateBuffers(GLcontext * ctx);
 
 extern void r600InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *functions);
 
+unsigned r600IsFormatRenderable(gl_format mesa_format);
+
 #endif                         /* __r600_TEX_H__ */
index 834bcc63e317d82648abdc99533430d60d3e3938..0677c54bea1a4e71b05239c6724560c0eaf30138 100644 (file)
@@ -6511,13 +6511,30 @@ GLboolean Process_Vertex_Exports(r700_AssemblerBase *pR700AsmCode,
         {
             return GL_FALSE;
         }
+        export_starting_index++;
+        export_count--;
+        }
 
+    unBit = 1 << VERT_RESULT_PSIZ;
+    if(OutputsWritten & unBit)
+    {
+        if( GL_FALSE == Process_Export(pR700AsmCode,
+                                       SQ_EXPORT_POS,
+                                       export_starting_index,
+                                       1,
+                                       pR700AsmCode->ucVP_OutputMap[VERT_RESULT_PSIZ],
+                                       GL_FALSE) )
+        {
+            return GL_FALSE;
+        }
         export_count--;
+    }
+
+    pR700AsmCode->cf_last_export_ptr->m_Word1.f.cf_inst = SQ_CF_INST_EXPORT_DONE;
 
-        pR700AsmCode->cf_last_export_ptr->m_Word1.f.cf_inst = SQ_CF_INST_EXPORT_DONE;
-       }
 
     pR700AsmCode->number_of_exports = export_count;
+    export_starting_index = 0;
 
        unBit = 1 << VERT_RESULT_COL0;
        if(OutputsWritten & unBit)
index 63614b160ccbaf3ff7e183691b16306162e348ad..cefda3ac4bae9431b214e797f8142d08feaa9e89 100644 (file)
@@ -290,7 +290,7 @@ static void r700SendVTXState(GLcontext *ctx, struct radeon_state_atom *atom)
 static void r700SetRenderTarget(context_t *context, int id)
 {
     R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw);
-
+    uint32_t format = COLOR_8_8_8_8, comp_swap = SWAP_ALT, number_type = NUMBER_UNORM;
     struct radeon_renderbuffer *rrb;
     unsigned int nPitchInPixel;
 
@@ -312,22 +312,251 @@ static void r700SetRenderTarget(context_t *context, int id)
     SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ENDIAN_NONE, ENDIAN_shift, ENDIAN_mask);
     SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ARRAY_LINEAR_GENERAL,
              CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
-    if(4 == rrb->cpp)
-    {
-        SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, COLOR_8_8_8_8,
-                 CB_COLOR0_INFO__FORMAT_shift, CB_COLOR0_INFO__FORMAT_mask);
-        SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, SWAP_ALT, COMP_SWAP_shift, COMP_SWAP_mask);
-    }
-    else
-    {
-        SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, COLOR_5_6_5,
-                 CB_COLOR0_INFO__FORMAT_shift, CB_COLOR0_INFO__FORMAT_mask);
-        SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, SWAP_ALT_REV,
-                 COMP_SWAP_shift, COMP_SWAP_mask);
+
+    switch (rrb->base.Format) {
+    case MESA_FORMAT_RGBA8888:
+            format = COLOR_8_8_8_8;
+            comp_swap = SWAP_STD_REV;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_SIGNED_RGBA8888:
+            format = COLOR_8_8_8_8;
+            comp_swap = SWAP_STD_REV;
+           number_type = NUMBER_SNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_RGBA8888_REV:
+            format = COLOR_8_8_8_8;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_SIGNED_RGBA8888_REV:
+            format = COLOR_8_8_8_8;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_SNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_ARGB8888:
+    case MESA_FORMAT_XRGB8888:
+            format = COLOR_8_8_8_8;
+            comp_swap = SWAP_ALT;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_ARGB8888_REV:
+    case MESA_FORMAT_XRGB8888_REV:
+            format = COLOR_8_8_8_8;
+            comp_swap = SWAP_ALT_REV;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_RGB565:
+            format = COLOR_5_6_5;
+            comp_swap = SWAP_STD_REV;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_RGB565_REV:
+            format = COLOR_5_6_5;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_ARGB4444:
+            format = COLOR_4_4_4_4;
+            comp_swap = SWAP_ALT;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_ARGB4444_REV:
+            format = COLOR_4_4_4_4;
+            comp_swap = SWAP_ALT_REV;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_ARGB1555:
+            format = COLOR_1_5_5_5;
+            comp_swap = SWAP_ALT;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_ARGB1555_REV:
+            format = COLOR_1_5_5_5;
+            comp_swap = SWAP_ALT_REV;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_AL88:
+            format = COLOR_8_8;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_AL88_REV:
+            format = COLOR_8_8;
+            comp_swap = SWAP_STD_REV;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_RGB332:
+            format = COLOR_3_3_2;
+            comp_swap = SWAP_STD_REV;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_A8:
+            format = COLOR_8;
+            comp_swap = SWAP_ALT_REV;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_I8:
+    case MESA_FORMAT_CI8:
+            format = COLOR_8;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_L8:
+            format = COLOR_8;
+            comp_swap = SWAP_ALT;
+           number_type = NUMBER_UNORM;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_RGBA_FLOAT32:
+            format = COLOR_32_32_32_32_FLOAT;
+            comp_swap = SWAP_STD_REV;
+           number_type = NUMBER_FLOAT;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_RGBA_FLOAT16:
+            format = COLOR_16_16_16_16_FLOAT;
+            comp_swap = SWAP_STD_REV;
+           number_type = NUMBER_FLOAT;
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_ALPHA_FLOAT32:
+            format = COLOR_32_FLOAT;
+            comp_swap = SWAP_ALT_REV;
+           number_type = NUMBER_FLOAT;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_ALPHA_FLOAT16:
+            format = COLOR_16_FLOAT;
+            comp_swap = SWAP_ALT_REV;
+           number_type = NUMBER_FLOAT;
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_LUMINANCE_FLOAT32:
+            format = COLOR_32_FLOAT;
+            comp_swap = SWAP_ALT;
+           number_type = NUMBER_FLOAT;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_LUMINANCE_FLOAT16:
+            format = COLOR_16_FLOAT;
+            comp_swap = SWAP_ALT;
+           number_type = NUMBER_FLOAT;
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
+            format = COLOR_32_32_FLOAT;
+            comp_swap = SWAP_ALT_REV;
+           number_type = NUMBER_FLOAT;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
+            format = COLOR_16_16_FLOAT;
+            comp_swap = SWAP_ALT_REV;
+           number_type = NUMBER_FLOAT;
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */
+            format = COLOR_32_FLOAT;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_FLOAT;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */
+            format = COLOR_16_FLOAT;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_UNORM;
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_X8_Z24:
+    case MESA_FORMAT_S8_Z24:
+            format = COLOR_8_24;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_UNORM;
+           SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ARRAY_1D_TILED_THIN1,
+                    CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_Z24_S8:
+            format = COLOR_24_8;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_UNORM;
+           SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ARRAY_1D_TILED_THIN1,
+                    CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_Z16:
+            format = COLOR_16;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_UNORM;
+           SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ARRAY_1D_TILED_THIN1,
+                    CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_Z32:
+            format = COLOR_32;
+            comp_swap = SWAP_STD;
+           number_type = NUMBER_UNORM;
+           SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ARRAY_1D_TILED_THIN1,
+                    CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_SRGBA8:
+            format = COLOR_8_8_8_8;
+            comp_swap = SWAP_STD_REV;
+           number_type = NUMBER_SRGB;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_SLA8:
+            format = COLOR_8_8;
+            comp_swap = SWAP_ALT_REV;
+           number_type = NUMBER_SRGB;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    case MESA_FORMAT_SL8:
+            format = COLOR_8;
+            comp_swap = SWAP_ALT_REV;
+           number_type = NUMBER_SRGB;
+           SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+            break;
+    default:
+           _mesa_problem(context->radeon.glCtx, "unexpected format in r700SetRenderTarget()");
+           break;
     }
-    SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+
+    /* must be 0 on r7xx */
+    if (context->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV770)
+           CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+
+    SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, format,
+            CB_COLOR0_INFO__FORMAT_shift, CB_COLOR0_INFO__FORMAT_mask);
+    SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, comp_swap,
+            COMP_SWAP_shift, COMP_SWAP_mask);
+    SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, number_type,
+            NUMBER_TYPE_shift, NUMBER_TYPE_mask);
     SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_CLAMP_bit);
-    SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
 
     r700->render_target[id].enabled = GL_TRUE;
 }
index 84d51e66069fd69d0dc671e0231513088e80f14a..ee4d2828cff21b411494219b9ef22b99bec5bcec 100644 (file)
@@ -560,21 +560,22 @@ GLboolean r700SetupFragmentProgram(GLcontext * ctx)
         CLEARbit(r700->SPI_PS_IN_CONTROL_1.u32All, FRONT_FACE_ENA_bit);
     }
 
-    /* see if we need any point_sprite replacements */
-    for (i = VERT_RESULT_TEX0; i<= VERT_RESULT_TEX7; i++)
+    /* see if we need any point_sprite replacements, also increase num_interp
+     * as there's no vp output for them */
+    for (i = FRAG_ATTRIB_TEX0; i<= FRAG_ATTRIB_TEX7; i++)
     {
-        if(ctx->Point.CoordReplace[i - VERT_RESULT_TEX0] == GL_TRUE)
+        if(ctx->Point.CoordReplace[i - FRAG_ATTRIB_TEX0] == GL_TRUE) {
+            ui++;
             point_sprite = GL_TRUE;
+        }
     }
 
+    if( mesa_fp->Base.InputsRead & (1 << FRAG_ATTRIB_PNTC))
+        ui++;
+
     if ((mesa_fp->Base.InputsRead & (1 << FRAG_ATTRIB_PNTC)) || point_sprite)
     {
-        /* for FRAG_ATTRIB_PNTC we need to increase num_interp */
-        if(mesa_fp->Base.InputsRead & (1 << FRAG_ATTRIB_PNTC))
-        {
-            ui++;
-            SETfield(r700->SPI_PS_IN_CONTROL_0.u32All, ui, NUM_INTERP_shift, NUM_INTERP_mask);
-        }
+        SETfield(r700->SPI_PS_IN_CONTROL_0.u32All, ui, NUM_INTERP_shift, NUM_INTERP_mask);
         SETbit(r700->SPI_INTERP_CONTROL_0.u32All, PNT_SPRITE_ENA_bit);
         SETfield(r700->SPI_INTERP_CONTROL_0.u32All, SPI_PNT_SPRITE_SEL_S, PNT_SPRITE_OVRD_X_shift, PNT_SPRITE_OVRD_X_mask);
         SETfield(r700->SPI_INTERP_CONTROL_0.u32All, SPI_PNT_SPRITE_SEL_T, PNT_SPRITE_OVRD_Y_shift, PNT_SPRITE_OVRD_Y_mask);
@@ -669,7 +670,7 @@ GLboolean r700SetupFragmentProgram(GLcontext * ctx)
     for(i=0; i<8; i++)
     {
            unBit = 1 << (VERT_RESULT_TEX0 + i);
-           if(OutputsWritten & unBit)
+           if((OutputsWritten & unBit) || (ctx->Point.CoordReplace[i] == GL_TRUE))
            {
                    ui = pAsm->uiFP_AttributeMap[FRAG_ATTRIB_TEX0 + i];
                    SETbit(r700->SPI_PS_INPUT_CNTL[ui].u32All, SEL_CENTROID_bit);
index 1da31e7b2b4e2dec09ab62ac58b1b23912a8d377..ac64bbf874f283063674c79bd63ee891c4a4a546 100644 (file)
@@ -253,12 +253,15 @@ void r700UpdateShaderStates(GLcontext * ctx)
 
 static void r700SetDepthState(GLcontext * ctx)
 {
+       struct radeon_renderbuffer *rrb;
        context_t *context = R700_CONTEXT(ctx);
        R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw);
 
        R600_STATECHANGE(context, db);
 
-    if (ctx->Depth.Test)
+       rrb = radeon_get_depthbuffer(&context->radeon);
+
+    if (ctx->Depth.Test && rrb && rrb->bo)
     {
         SETbit(r700->DB_DEPTH_CONTROL.u32All, Z_ENABLE_bit);
         if (ctx->Depth.Mask)
index 05c65164d600d624d21f80f95496574dc22b292f..14dd2a5482c3b57720262afb41709c0358078917 100644 (file)
@@ -628,6 +628,16 @@ GLboolean r700SetupVertexProgram(GLcontext * ctx)
 
     R600_STATECHANGE(context, spi);
 
+    if(vp->mesa_program->Base.OutputsWritten & (1 << VERT_RESULT_PSIZ)) {
+        R600_STATECHANGE(context, cl);
+        SETbit(r700->PA_CL_VS_OUT_CNTL.u32All, USE_VTX_POINT_SIZE_bit);
+        SETbit(r700->PA_CL_VS_OUT_CNTL.u32All, VS_OUT_MISC_VEC_ENA_bit);
+    } else if (r700->PA_CL_VS_OUT_CNTL.u32All != 0) {
+        R600_STATECHANGE(context, cl);
+        CLEARbit(r700->PA_CL_VS_OUT_CNTL.u32All, USE_VTX_POINT_SIZE_bit);
+        CLEARbit(r700->PA_CL_VS_OUT_CNTL.u32All, VS_OUT_MISC_VEC_ENA_bit);
+    }
+
     SETfield(r700->SPI_VS_OUT_CONFIG.u32All,
             vp->r700Shader.nParamExports ? (vp->r700Shader.nParamExports - 1) : 0,
              VS_EXPORT_COUNT_shift, VS_EXPORT_COUNT_mask);
index cf12664bacdaf48dff604e3502145ebf550e6971..78f73bf99ce7399fae30efa65efd1668769bdc64 100644 (file)
@@ -618,8 +618,7 @@ static int bo_vram_validate(struct radeon_bo_int *bo,
 
     assert(bo_legacy->tobj->base.memBlock);
 
-    if (bo_legacy->tobj)
-       driUpdateTextureLRU(&bo_legacy->tobj->base);
+    driUpdateTextureLRU(&bo_legacy->tobj->base);
 
     if (bo_legacy->dirty || bo_legacy->tobj->base.dirty_images[0]) {
            if (IS_R600_CLASS(boml->screen)) {
index 04ce12493e6f1108ad5e791eadf615e4d4748334..ab6d02e56b96359dcfef214ee258588be6d70215 100644 (file)
@@ -31,6 +31,8 @@
 #include "main/imports.h"
 #include "main/simple_list.h"
 
+#include <inttypes.h>
+
 static void radeonQueryGetResult(GLcontext *ctx, struct gl_query_object *q)
 {
        radeonContextPtr radeon = RADEON_CONTEXT(ctx);
@@ -65,7 +67,7 @@ static void radeonQueryGetResult(GLcontext *ctx, struct gl_query_object *q)
 
                        }
                        radeon_print(RADEON_STATE, RADEON_TRACE,
-                                    "%d start: %llx, end: %llx %lld\n", i, start, end, end - start);
+                                    "%d start: %" PRIu64 ", end: %" PRIu64 " %" PRIu64 "\n", i, start, end, end - start);
                }
        } else {
                for (i = 0; i < query->curr_offset/sizeof(uint32_t); ++i) {
index fca0f8173b9d6e656c954a7094ba219a6ba6eeab..4f59511a528218684bd3f3dffc2341835ee190e8 100644 (file)
@@ -1137,6 +1137,7 @@ radeonCreateScreen( __DRIscreen *sPriv )
        /* pipe overrides */
        switch (dri_priv->deviceID) {
        case PCI_CHIP_R300_AD: /* 9500 with 1 quadpipe verified by: Reid Linnemann <lreid@cs.okstate.edu> */
+       case PCI_CHIP_R350_AH: /* 9800 SE only have 1 quadpipe */
        case PCI_CHIP_RV410_5E4C: /* RV410 SE only have 1 quadpipe */
        case PCI_CHIP_RV410_5E4F: /* RV410 SE only have 1 quadpipe */
           screen->num_gb_pipes = 1;
@@ -1235,6 +1236,8 @@ radeonCreateScreen( __DRIscreen *sPriv )
    screen->extensions[i++] = &r600texOffsetExtension.base;
 #endif
 
+   screen->extensions[i++] = &dri2ConfigQueryExtension.base;
+
    screen->extensions[i++] = NULL;
    sPriv->extensions = screen->extensions;
 
@@ -1344,6 +1347,7 @@ radeonCreateScreen2(__DRIscreen *sPriv)
        /* pipe overrides */
        switch (device_id) {
        case PCI_CHIP_R300_AD: /* 9500 with 1 quadpipe verified by: Reid Linnemann <lreid@cs.okstate.edu> */
+       case PCI_CHIP_R350_AH: /* 9800 SE only have 1 quadpipe */
        case PCI_CHIP_RV410_5E4C: /* RV410 SE only have 1 quadpipe */
        case PCI_CHIP_RV410_5E4F: /* RV410 SE only have 1 quadpipe */
           screen->num_gb_pipes = 1;
index 5e6d432e11dbb16e7df222e0099ce26d0c32c3bc..0d7e335fa3a83b073bd5ad8fddee5d0fde0b96f7 100644 (file)
@@ -105,7 +105,7 @@ typedef struct radeon_screen {
    /* Configuration cache with default values for all contexts */
    driOptionCache optionCache;
 
-   const __DRIextension *extensions[16];
+   const __DRIextension *extensions[17];
 
    int num_gb_pipes;
    int num_z_pipes;
index 3cdc84d2b9818f40bebad7344f1d63ffdddcbd80..8dc827c5a8998d3a8b1ff7d13db4a2d4c4af77b1 100644 (file)
@@ -3,7 +3,7 @@
 
 <OpenGLAPI>
 
-<category name="GL_ARB_seamless_cubemap" number="65">
+<category name="GL_ARB_seamless_cube_map" number="65">
     <enum name="TEXTURE_CUBE_MAP_SEAMLESS"     count="1"  value="0x88F4">
         <size name="Get" mode="get"/>
     </enum>
index c73e8dd3b040a7ddfbce7ef59400ee3824b3d9c1..ec96ab36f0f7eff64d00292356416fb2e1ab63c9 100644 (file)
@@ -265,7 +265,8 @@ str_dup(const char *str)
    copy = (char*) malloc(strlen(str) + 1);
    if (!copy)
       return NULL;
-   strcpy(copy, str);
+   strncpy(copy, str, strlen(str));
+   copy[strlen(str)] = '\0';
    return copy;
 }
 
index df9c5872842ef1369fbf5522cf40dbd5309fbbf4..4257b1fbce63d9210ff1f2686489921e5ad6ac45 100644 (file)
 
 #include "glapi/glapi.h"
 
+
+/*
+ * These stubs are kept so that the old DRI drivers still load.
+ */
+PUBLIC void
+_glapi_noop_enable_warnings(GLboolean enable);
+
+PUBLIC void
+_glapi_set_warning_func(_glapi_proc func);
+
+void
+_glapi_noop_enable_warnings(GLboolean enable)
+{
+}
+
+void
+_glapi_set_warning_func(_glapi_proc func)
+{
+}
+
 #ifdef DEBUG
 
 /**
index 9bcfc1008a8852f402733053645ceecfdd279c35..526145aeccfe90f82fe04cb8b155d28f3b97f867 100644 (file)
@@ -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);
index 168c424ea1c555f33c3d51d292abeb28629dc686..3f093cb6971db8e31b9c4151ef48e834843d1a1b 100644 (file)
@@ -7725,7 +7725,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);
             }
index 162a7b952673c5a8d7f2189e02ffb5c5a212a2f9..13705b9f67166d86df1b2c28ca0ed97c0327923e 100644 (file)
@@ -5581,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;
    }
 }
index d0c9c0028b2cea90d3bc0bedbe2410523f092c1d..b9796e4a4236bc26ac44d6bdd03379dcc631d49d 100644 (file)
@@ -637,6 +637,35 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
       0, 0, 0, 0, 0,
       1, 1, 2
    },
+
+   /* Signed 8 bits / channel */
+   {
+      MESA_FORMAT_SIGNED_R8,        /* Name */
+      "MESA_FORMAT_SIGNED_R8",      /* StrName */
+      GL_RGBA,                      /* BaseFormat */
+      GL_SIGNED_NORMALIZED,         /* DataType */
+      8, 0, 0, 0,                   /* Red/Green/Blue/AlphaBits */
+      0, 0, 0, 0, 0,                /* Lum/Int/Index/Depth/StencilBits */
+      1, 1, 1                       /* BlockWidth/Height,Bytes */
+   },
+   {
+      MESA_FORMAT_SIGNED_RG88,
+      "MESA_FORMAT_SIGNED_RG88",
+      GL_RGBA,
+      GL_SIGNED_NORMALIZED,
+      8, 8, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_SIGNED_RGBX8888,
+      "MESA_FORMAT_SIGNED_RGBX8888",
+      GL_RGBA,
+      GL_SIGNED_NORMALIZED,
+      8, 8, 8, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 4                       /* 4 bpp, but no alpha */
+   },
    {
       MESA_FORMAT_SIGNED_RGBA8888,
       "MESA_FORMAT_SIGNED_RGBA8888",
@@ -655,6 +684,35 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
       0, 0, 0, 0, 0,
       1, 1, 4
    },
+
+   /* Signed 16 bits / channel */
+   {
+      MESA_FORMAT_SIGNED_R_16,
+      "MESA_FORMAT_SIGNED_R_16",
+      GL_RGBA,
+      GL_SIGNED_NORMALIZED,
+      16, 0, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_SIGNED_RG_16,
+      "MESA_FORMAT_SIGNED_RG_16",
+      GL_RGBA,
+      GL_SIGNED_NORMALIZED,
+      16, 16, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_SIGNED_RGB_16,
+      "MESA_FORMAT_SIGNED_RGB_16",
+      GL_RGBA,
+      GL_SIGNED_NORMALIZED,
+      16, 16, 16, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 6
+   },
    {
       MESA_FORMAT_SIGNED_RGBA_16,
       "MESA_FORMAT_SIGNED_RGBA_16",
index 0eeeb8b2bacf3ba59da82d761230ac09e7381056..97e1fc5df465a070752ff488a3a44474f49f13cb 100644 (file)
@@ -130,13 +130,21 @@ typedef enum
    MESA_FORMAT_INTENSITY_FLOAT16,
    /*@}*/
 
+                                  /* msb <------ TEXEL BITS -----------> lsb */
+                                  /* ---- ---- ---- ---- ---- ---- ---- ---- */
    /**
     * \name Signed fixed point texture formats.
     */
    /*@{*/
-   MESA_FORMAT_DUDV8,
-   MESA_FORMAT_SIGNED_RGBA8888,
-   MESA_FORMAT_SIGNED_RGBA8888_REV,
+   MESA_FORMAT_DUDV8,             /*                     DUDU DUDU DVDV DVDV */
+   MESA_FORMAT_SIGNED_R8,         /*                               RRRR RRRR */
+   MESA_FORMAT_SIGNED_RG88,       /*                     RRRR RRRR GGGG GGGG */
+   MESA_FORMAT_SIGNED_RGBX8888,   /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */
+   MESA_FORMAT_SIGNED_RGBA8888,   /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
+   MESA_FORMAT_SIGNED_RGBA8888_REV,/*AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */
+   MESA_FORMAT_SIGNED_R_16,
+   MESA_FORMAT_SIGNED_RG_16,
+   MESA_FORMAT_SIGNED_RGB_16,
    MESA_FORMAT_SIGNED_RGBA_16,
    /*@}*/
 
index 5a654e5c2a3822239ac02fd30b2ee15d9d614f58..31689c8fe807defdcbcaad3194187f4b90642c26 100644 (file)
@@ -35,6 +35,7 @@
 #include "buffers.h"
 #include "context.h"
 #include "depthstencil.h"
+#include "enums.h"
 #include "formats.h"
 #include "macros.h"
 #include "mtypes.h"
@@ -1019,3 +1020,43 @@ _mesa_get_color_read_type(GLcontext *ctx)
       return GL_UNSIGNED_BYTE;
    }
 }
+
+
+/**
+ * Print framebuffer info to stderr, for debugging.
+ */
+void
+_mesa_print_framebuffer(const struct gl_framebuffer *fb)
+{
+   GLuint i;
+
+   fprintf(stderr, "Mesa Framebuffer %u at %p\n", fb->Name, (void *) fb);
+   fprintf(stderr, "  Size: %u x %u  Status: %s\n", fb->Width, fb->Height,
+           _mesa_lookup_enum_by_nr(fb->_Status));
+   fprintf(stderr, "  Attachments:\n");
+
+   for (i = 0; i < BUFFER_COUNT; i++) {
+      const struct gl_renderbuffer_attachment *att = &fb->Attachment[i];
+      if (att->Type == GL_TEXTURE) {
+         const struct gl_texture_image *texImage;
+         fprintf(stderr,
+                 "  %2d: Texture %u, level %u, face %u, slice %u, complete %d\n",
+                 i, att->Texture->Name, att->TextureLevel, att->CubeMapFace,
+                 att->Zoffset, att->Complete);
+         texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel];
+         fprintf(stderr, "       Size: %u x %u x %u  Format %s\n",
+                 texImage->Width, texImage->Height, texImage->Depth,
+                 _mesa_get_format_name(texImage->TexFormat));
+      }
+      else if (att->Type == GL_RENDERBUFFER) {
+         fprintf(stderr, "  %2d: Renderbuffer %u, complete %d\n",
+                 i, att->Renderbuffer->Name, att->Complete);
+         fprintf(stderr, "       Size: %u x %u  Format %s\n",
+                 att->Renderbuffer->Width, att->Renderbuffer->Height,
+                 _mesa_get_format_name(att->Renderbuffer->Format));
+      }
+      else {
+         fprintf(stderr, "  %2d: none\n", i);
+      }
+   }
+}
index 960513812cf67ac67cbd810049dd903e4854b82e..1b6e3b1f0cbe93241768c2c979f75840923f443a 100644 (file)
@@ -91,4 +91,7 @@ _mesa_get_color_read_type(GLcontext *ctx);
 extern GLenum
 _mesa_get_color_read_format(GLcontext *ctx);
 
+extern void
+_mesa_print_framebuffer(const struct gl_framebuffer *fb);
+
 #endif /* FRAMEBUFFER_H */
index dc8d97728bf1cce592de692c5a40c66715dc08bc..93b01423dcf08551c297d8a72e91cd49c6348738 100644 (file)
@@ -734,6 +734,32 @@ _mesa_is_depthstencil_format(GLenum format)
    }
 }
 
+
+/**
+ * Test if the given image format is a depth or stencil format.
+ */
+GLboolean
+_mesa_is_depth_or_stencil_format(GLenum format)
+{
+   switch (format) {
+      case GL_DEPTH_COMPONENT:
+      case GL_DEPTH_COMPONENT16:
+      case GL_DEPTH_COMPONENT24:
+      case GL_DEPTH_COMPONENT32:
+      case GL_STENCIL_INDEX:
+      case GL_STENCIL_INDEX1_EXT:
+      case GL_STENCIL_INDEX4_EXT:
+      case GL_STENCIL_INDEX8_EXT:
+      case GL_STENCIL_INDEX16_EXT:
+      case GL_DEPTH_STENCIL_EXT:
+      case GL_DEPTH24_STENCIL8_EXT:
+         return GL_TRUE;
+      default:
+         return GL_FALSE;
+   }
+}
+
+
 /**
  * Test if the given image format is a dudv format.
  */
@@ -750,6 +776,40 @@ _mesa_is_dudv_format(GLenum format)
 }
 
 
+/**
+ * Test if an image format is a supported compressed format.
+ * \param format the internal format token provided by the user.
+ * \return GL_TRUE if compressed, GL_FALSE if uncompressed
+ */
+GLboolean
+_mesa_is_compressed_format(GLcontext *ctx, GLenum format)
+{
+   switch (format) {
+   case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
+   case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
+   case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
+   case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
+      return ctx->Extensions.EXT_texture_compression_s3tc;
+   case GL_RGB_S3TC:
+   case GL_RGB4_S3TC:
+   case GL_RGBA_S3TC:
+   case GL_RGBA4_S3TC:
+      return ctx->Extensions.S3_s3tc;
+   case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
+   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
+   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
+   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
+      return ctx->Extensions.EXT_texture_sRGB
+         && ctx->Extensions.EXT_texture_compression_s3tc;
+   case GL_COMPRESSED_RGB_FXT1_3DFX:
+   case GL_COMPRESSED_RGBA_FXT1_3DFX:
+      return ctx->Extensions.TDFX_texture_compression_FXT1;
+   default:
+      return GL_FALSE;
+   }
+}
+
+
 /**
  * Return the address of a specific pixel in an image (1D, 2D or 3D).
  *
index 9b34be0dfaa529be7d6eed80b16f58a1df701ddb..48582eb3bbe1490464a1a3b81e3ba363cad5d9ef 100644 (file)
@@ -72,9 +72,14 @@ _mesa_is_ycbcr_format(GLenum format);
 extern GLboolean
 _mesa_is_depthstencil_format(GLenum format);
 
+extern GLboolean
+_mesa_is_depth_or_stencil_format(GLenum format);
+
 extern GLboolean
 _mesa_is_dudv_format(GLenum format);
 
+extern GLboolean
+_mesa_is_compressed_format(GLcontext *ctx, GLenum format);
 
 extern GLvoid *
 _mesa_image_address( GLuint dimensions,
index 51f7edfab123c04c20414f22136c198276530cea..c0c29f78893875e6152183e74f382b3baea6bc76 100644 (file)
@@ -1581,7 +1581,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
       struct gl_texture_image *dstImage;
       GLint srcWidth, srcHeight, srcDepth;
       GLint dstWidth, dstHeight, dstDepth;
-      GLint border, bytesPerTexel;
+      GLint border;
       GLboolean nextLevel;
 
       /* get src image parameters */
@@ -1623,33 +1623,24 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
       dstImage->FetchTexelc = srcImage->FetchTexelc;
       dstImage->FetchTexelf = srcImage->FetchTexelf;
 
-      /* Alloc new teximage data buffer.
-       * Setup src and dest data pointers.
-       */
-      if (_mesa_is_format_compressed(dstImage->TexFormat)) {
-         GLuint dstCompressedSize = 
-            _mesa_format_image_size(dstImage->TexFormat, dstImage->Width,
-                                    dstImage->Height, dstImage->Depth);
-         ASSERT(dstCompressedSize > 0);
-
-         dstImage->Data = _mesa_alloc_texmemory(dstCompressedSize);
+      /* Alloc new teximage data buffer */
+      {
+         GLuint size = _mesa_format_image_size(dstImage->TexFormat,
+                                               dstWidth, dstHeight, dstDepth);
+         dstImage->Data = _mesa_alloc_texmemory(size);
          if (!dstImage->Data) {
             _mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps");
             return;
          }
+      }
+
+      /* Setup src and dest data pointers */
+      if (_mesa_is_format_compressed(dstImage->TexFormat)) {
          /* srcData and dstData are already set */
          ASSERT(srcData);
          ASSERT(dstData);
       }
       else {
-         bytesPerTexel = _mesa_get_format_bytes(dstImage->TexFormat);
-         ASSERT(dstWidth * dstHeight * dstDepth * bytesPerTexel > 0);
-         dstImage->Data = _mesa_alloc_texmemory(dstWidth * dstHeight
-                                                * dstDepth * bytesPerTexel);
-         if (!dstImage->Data) {
-            _mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps");
-            return;
-         }
          srcData = (const GLubyte *) srcImage->Data;
          dstData = (GLubyte *) dstImage->Data;
       }
index f877320d699b59ba978bb87ff12b90d96742a61b..863f878fea8c0c04994f80052b67ec73afca5b60 100644 (file)
@@ -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) {
index b37039429f497408937f52bfef5bebf3bb2c686d..48a22c194552d7d17446f0af56423e1d9d6a4b3e 100644 (file)
@@ -115,7 +115,7 @@ static void store_null_texel(struct gl_texture_image *texImage,
  * XXX this is somewhat temporary.
  */
 static struct {
-   GLuint Name;
+   gl_format Name;
    FetchTexelFuncF Fetch1D;
    FetchTexelFuncF Fetch2D;
    FetchTexelFuncF Fetch3D;
@@ -124,222 +124,13 @@ static struct {
 texfetch_funcs[MESA_FORMAT_COUNT] =
 {
    {
-      MESA_FORMAT_SRGB8,
-      fetch_texel_1d_srgb8,
-      fetch_texel_2d_srgb8,
-      fetch_texel_3d_srgb8,
-      store_texel_srgb8
-   },
-   {
-      MESA_FORMAT_SRGBA8,
-      fetch_texel_1d_srgba8,
-      fetch_texel_2d_srgba8,
-      fetch_texel_3d_srgba8,
-      store_texel_srgba8
-   },
-   {
-      MESA_FORMAT_SARGB8,
-      fetch_texel_1d_sargb8,
-      fetch_texel_2d_sargb8,
-      fetch_texel_3d_sargb8,
-      store_texel_sargb8
-   },
-   {
-      MESA_FORMAT_SL8,
-      fetch_texel_1d_sl8,
-      fetch_texel_2d_sl8,
-      fetch_texel_3d_sl8,
-      store_texel_sl8
-   },
-   {
-      MESA_FORMAT_SLA8,
-      fetch_texel_1d_sla8,
-      fetch_texel_2d_sla8,
-      fetch_texel_3d_sla8,
-      store_texel_sla8
-   },
-   {
-      MESA_FORMAT_RGB_FXT1,
-      NULL,
-      _mesa_fetch_texel_2d_f_rgb_fxt1,
-      NULL,
-      NULL
-   },
-   {
-      MESA_FORMAT_RGBA_FXT1,
-      NULL,
-      _mesa_fetch_texel_2d_f_rgba_fxt1,
-      NULL,
-      NULL
-   },
-   {
-      MESA_FORMAT_RGB_DXT1,
-      NULL,
-      _mesa_fetch_texel_2d_f_rgb_dxt1,
-      NULL,
-      NULL
-   },
-   {
-      MESA_FORMAT_RGBA_DXT1,
-      NULL,
-      _mesa_fetch_texel_2d_f_rgba_dxt1,
-      NULL,
-      NULL
-   },
-   {
-      MESA_FORMAT_RGBA_DXT3,
-      NULL,
-      _mesa_fetch_texel_2d_f_rgba_dxt3,
-      NULL,
-      NULL
-   },
-   {
-      MESA_FORMAT_RGBA_DXT5,
-      NULL,
-      _mesa_fetch_texel_2d_f_rgba_dxt5,
-      NULL,
-      NULL
-   },
-   {
-      MESA_FORMAT_SRGB_DXT1,
-      NULL,
-      _mesa_fetch_texel_2d_f_srgb_dxt1,
-      NULL,
-      NULL
-   },
-   {
-      MESA_FORMAT_SRGBA_DXT1,
-      NULL,
-      _mesa_fetch_texel_2d_f_srgba_dxt1,
-      NULL,
-      NULL
-   },
-   {
-      MESA_FORMAT_SRGBA_DXT3,
-      NULL,
-      _mesa_fetch_texel_2d_f_srgba_dxt3,
-      NULL,
-      NULL
-   },
-   {
-      MESA_FORMAT_SRGBA_DXT5,
-      NULL,
-      _mesa_fetch_texel_2d_f_srgba_dxt5,
-      NULL,
-      NULL
-   },
-   {
-      MESA_FORMAT_RGBA_FLOAT32,
-      fetch_texel_1d_f_rgba_f32,
-      fetch_texel_2d_f_rgba_f32,
-      fetch_texel_3d_f_rgba_f32,
-      store_texel_rgba_f32
-   },
-   {
-      MESA_FORMAT_RGBA_FLOAT16,
-      fetch_texel_1d_f_rgba_f16,
-      fetch_texel_2d_f_rgba_f16,
-      fetch_texel_3d_f_rgba_f16,
-      store_texel_rgba_f16
-   },
-   {
-      MESA_FORMAT_RGB_FLOAT32,
-      fetch_texel_1d_f_rgb_f32,
-      fetch_texel_2d_f_rgb_f32,
-      fetch_texel_3d_f_rgb_f32,
-      store_texel_rgb_f32
-   },
-   {
-      MESA_FORMAT_RGB_FLOAT16,
-      fetch_texel_1d_f_rgb_f16,
-      fetch_texel_2d_f_rgb_f16,
-      fetch_texel_3d_f_rgb_f16,
-      store_texel_rgb_f16
-   },
-   {
-      MESA_FORMAT_ALPHA_FLOAT32,
-      fetch_texel_1d_f_alpha_f32,
-      fetch_texel_2d_f_alpha_f32,
-      fetch_texel_3d_f_alpha_f32,
-      store_texel_alpha_f32
-   },
-   {
-      MESA_FORMAT_ALPHA_FLOAT16,
-      fetch_texel_1d_f_alpha_f16,
-      fetch_texel_2d_f_alpha_f16,
-      fetch_texel_3d_f_alpha_f16,
-      store_texel_alpha_f16
-   },
-   {
-      MESA_FORMAT_LUMINANCE_FLOAT32,
-      fetch_texel_1d_f_luminance_f32,
-      fetch_texel_2d_f_luminance_f32,
-      fetch_texel_3d_f_luminance_f32,
-      store_texel_luminance_f32
-   },
-   {
-      MESA_FORMAT_LUMINANCE_FLOAT16,
-      fetch_texel_1d_f_luminance_f16,
-      fetch_texel_2d_f_luminance_f16,
-      fetch_texel_3d_f_luminance_f16,
-      store_texel_luminance_f16
-   },
-   {
-      MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32,
-      fetch_texel_1d_f_luminance_alpha_f32,
-      fetch_texel_2d_f_luminance_alpha_f32,
-      fetch_texel_3d_f_luminance_alpha_f32,
-      store_texel_luminance_alpha_f32
-   },
-   {
-      MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16,
-      fetch_texel_1d_f_luminance_alpha_f16,
-      fetch_texel_2d_f_luminance_alpha_f16,
-      fetch_texel_3d_f_luminance_alpha_f16,
-      store_texel_luminance_alpha_f16
-   },
-   {
-      MESA_FORMAT_INTENSITY_FLOAT32,
-      fetch_texel_1d_f_intensity_f32,
-      fetch_texel_2d_f_intensity_f32,
-      fetch_texel_3d_f_intensity_f32,
-      store_texel_intensity_f32
-   },
-   {
-      MESA_FORMAT_INTENSITY_FLOAT16,
-      fetch_texel_1d_f_intensity_f16,
-      fetch_texel_2d_f_intensity_f16,
-      fetch_texel_3d_f_intensity_f16,
-      store_texel_intensity_f16
-   },
-   {
-      MESA_FORMAT_DUDV8,
-      fetch_texel_1d_dudv8,
-      fetch_texel_2d_dudv8,
-      fetch_texel_3d_dudv8,
-      NULL
-   },
-   {
-      MESA_FORMAT_SIGNED_RGBA8888,
-      fetch_texel_1d_signed_rgba8888,
-      fetch_texel_2d_signed_rgba8888,
-      fetch_texel_3d_signed_rgba8888,
-      store_texel_signed_rgba8888
-   },
-   {
-      MESA_FORMAT_SIGNED_RGBA8888_REV,
-      fetch_texel_1d_signed_rgba8888_rev,
-      fetch_texel_2d_signed_rgba8888_rev,
-      fetch_texel_3d_signed_rgba8888_rev,
-      store_texel_signed_rgba8888_rev
-   },
-   {
-      MESA_FORMAT_SIGNED_RGBA_16,
-      NULL, /* XXX to do */
-      NULL,
-      NULL,
-      NULL
+      MESA_FORMAT_NONE,
+      fetch_null_texelf,
+      fetch_null_texelf,
+      fetch_null_texelf,
+      store_null_texel
    },
+
    {
       MESA_FORMAT_RGBA8888,
       fetch_texel_1d_f_rgba8888,
@@ -563,56 +354,313 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       fetch_texel_2d_f_z32,
       fetch_texel_3d_f_z32,
       store_texel_z32
-   }
+   },
+   {
+      MESA_FORMAT_S8,
+      NULL,
+      NULL,
+      NULL,
+      NULL
+   },
+   {
+      MESA_FORMAT_SRGB8,
+      fetch_texel_1d_srgb8,
+      fetch_texel_2d_srgb8,
+      fetch_texel_3d_srgb8,
+      store_texel_srgb8
+   },
+   {
+      MESA_FORMAT_SRGBA8,
+      fetch_texel_1d_srgba8,
+      fetch_texel_2d_srgba8,
+      fetch_texel_3d_srgba8,
+      store_texel_srgba8
+   },
+   {
+      MESA_FORMAT_SARGB8,
+      fetch_texel_1d_sargb8,
+      fetch_texel_2d_sargb8,
+      fetch_texel_3d_sargb8,
+      store_texel_sargb8
+   },
+   {
+      MESA_FORMAT_SL8,
+      fetch_texel_1d_sl8,
+      fetch_texel_2d_sl8,
+      fetch_texel_3d_sl8,
+      store_texel_sl8
+   },
+   {
+      MESA_FORMAT_SLA8,
+      fetch_texel_1d_sla8,
+      fetch_texel_2d_sla8,
+      fetch_texel_3d_sla8,
+      store_texel_sla8
+   },
+   {
+      MESA_FORMAT_SRGB_DXT1,
+      NULL,
+      _mesa_fetch_texel_2d_f_srgb_dxt1,
+      NULL,
+      NULL
+   },
+   {
+      MESA_FORMAT_SRGBA_DXT1,
+      NULL,
+      _mesa_fetch_texel_2d_f_srgba_dxt1,
+      NULL,
+      NULL
+   },
+   {
+      MESA_FORMAT_SRGBA_DXT3,
+      NULL,
+      _mesa_fetch_texel_2d_f_srgba_dxt3,
+      NULL,
+      NULL
+   },
+   {
+      MESA_FORMAT_SRGBA_DXT5,
+      NULL,
+      _mesa_fetch_texel_2d_f_srgba_dxt5,
+      NULL,
+      NULL
+   },
+
+   {
+      MESA_FORMAT_RGB_FXT1,
+      NULL,
+      _mesa_fetch_texel_2d_f_rgb_fxt1,
+      NULL,
+      NULL
+   },
+   {
+      MESA_FORMAT_RGBA_FXT1,
+      NULL,
+      _mesa_fetch_texel_2d_f_rgba_fxt1,
+      NULL,
+      NULL
+   },
+   {
+      MESA_FORMAT_RGB_DXT1,
+      NULL,
+      _mesa_fetch_texel_2d_f_rgb_dxt1,
+      NULL,
+      NULL
+   },
+   {
+      MESA_FORMAT_RGBA_DXT1,
+      NULL,
+      _mesa_fetch_texel_2d_f_rgba_dxt1,
+      NULL,
+      NULL
+   },
+   {
+      MESA_FORMAT_RGBA_DXT3,
+      NULL,
+      _mesa_fetch_texel_2d_f_rgba_dxt3,
+      NULL,
+      NULL
+   },
+   {
+      MESA_FORMAT_RGBA_DXT5,
+      NULL,
+      _mesa_fetch_texel_2d_f_rgba_dxt5,
+      NULL,
+      NULL
+   },
+   {
+      MESA_FORMAT_RGBA_FLOAT32,
+      fetch_texel_1d_f_rgba_f32,
+      fetch_texel_2d_f_rgba_f32,
+      fetch_texel_3d_f_rgba_f32,
+      store_texel_rgba_f32
+   },
+   {
+      MESA_FORMAT_RGBA_FLOAT16,
+      fetch_texel_1d_f_rgba_f16,
+      fetch_texel_2d_f_rgba_f16,
+      fetch_texel_3d_f_rgba_f16,
+      store_texel_rgba_f16
+   },
+   {
+      MESA_FORMAT_RGB_FLOAT32,
+      fetch_texel_1d_f_rgb_f32,
+      fetch_texel_2d_f_rgb_f32,
+      fetch_texel_3d_f_rgb_f32,
+      store_texel_rgb_f32
+   },
+   {
+      MESA_FORMAT_RGB_FLOAT16,
+      fetch_texel_1d_f_rgb_f16,
+      fetch_texel_2d_f_rgb_f16,
+      fetch_texel_3d_f_rgb_f16,
+      store_texel_rgb_f16
+   },
+   {
+      MESA_FORMAT_ALPHA_FLOAT32,
+      fetch_texel_1d_f_alpha_f32,
+      fetch_texel_2d_f_alpha_f32,
+      fetch_texel_3d_f_alpha_f32,
+      store_texel_alpha_f32
+   },
+   {
+      MESA_FORMAT_ALPHA_FLOAT16,
+      fetch_texel_1d_f_alpha_f16,
+      fetch_texel_2d_f_alpha_f16,
+      fetch_texel_3d_f_alpha_f16,
+      store_texel_alpha_f16
+   },
+   {
+      MESA_FORMAT_LUMINANCE_FLOAT32,
+      fetch_texel_1d_f_luminance_f32,
+      fetch_texel_2d_f_luminance_f32,
+      fetch_texel_3d_f_luminance_f32,
+      store_texel_luminance_f32
+   },
+   {
+      MESA_FORMAT_LUMINANCE_FLOAT16,
+      fetch_texel_1d_f_luminance_f16,
+      fetch_texel_2d_f_luminance_f16,
+      fetch_texel_3d_f_luminance_f16,
+      store_texel_luminance_f16
+   },
+   {
+      MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32,
+      fetch_texel_1d_f_luminance_alpha_f32,
+      fetch_texel_2d_f_luminance_alpha_f32,
+      fetch_texel_3d_f_luminance_alpha_f32,
+      store_texel_luminance_alpha_f32
+   },
+   {
+      MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16,
+      fetch_texel_1d_f_luminance_alpha_f16,
+      fetch_texel_2d_f_luminance_alpha_f16,
+      fetch_texel_3d_f_luminance_alpha_f16,
+      store_texel_luminance_alpha_f16
+   },
+   {
+      MESA_FORMAT_INTENSITY_FLOAT32,
+      fetch_texel_1d_f_intensity_f32,
+      fetch_texel_2d_f_intensity_f32,
+      fetch_texel_3d_f_intensity_f32,
+      store_texel_intensity_f32
+   },
+   {
+      MESA_FORMAT_INTENSITY_FLOAT16,
+      fetch_texel_1d_f_intensity_f16,
+      fetch_texel_2d_f_intensity_f16,
+      fetch_texel_3d_f_intensity_f16,
+      store_texel_intensity_f16
+   },
+   {
+      MESA_FORMAT_DUDV8,
+      fetch_texel_1d_dudv8,
+      fetch_texel_2d_dudv8,
+      fetch_texel_3d_dudv8,
+      NULL
+   },
+   {
+      MESA_FORMAT_SIGNED_R8,
+      fetch_texel_1d_signed_r8,
+      fetch_texel_2d_signed_r8,
+      fetch_texel_3d_signed_r8,
+      store_texel_signed_r8
+   },
+   {
+      MESA_FORMAT_SIGNED_RG88,
+      fetch_texel_1d_signed_rg88,
+      fetch_texel_2d_signed_rg88,
+      fetch_texel_3d_signed_rg88,
+      store_texel_signed_rg88
+   },
+   {
+      MESA_FORMAT_SIGNED_RGBX8888,
+      fetch_texel_1d_signed_rgbx8888,
+      fetch_texel_2d_signed_rgbx8888,
+      fetch_texel_3d_signed_rgbx8888,
+      store_texel_signed_rgbx8888
+   },
+   {
+      MESA_FORMAT_SIGNED_RGBA8888,
+      fetch_texel_1d_signed_rgba8888,
+      fetch_texel_2d_signed_rgba8888,
+      fetch_texel_3d_signed_rgba8888,
+      store_texel_signed_rgba8888
+   },
+   {
+      MESA_FORMAT_SIGNED_RGBA8888_REV,
+      fetch_texel_1d_signed_rgba8888_rev,
+      fetch_texel_2d_signed_rgba8888_rev,
+      fetch_texel_3d_signed_rgba8888_rev,
+      store_texel_signed_rgba8888_rev
+   },
+   {
+      MESA_FORMAT_SIGNED_R_16,
+      fetch_texel_1d_signed_r_16,
+      fetch_texel_2d_signed_r_16,
+      fetch_texel_3d_signed_r_16,
+      store_texel_signed_r_16
+   },
+   {
+      MESA_FORMAT_SIGNED_RG_16,
+      fetch_texel_1d_signed_rg_16,
+      fetch_texel_2d_signed_rg_16,
+      fetch_texel_3d_signed_rg_16,
+      store_texel_signed_rg_16
+   },
+   {
+      MESA_FORMAT_SIGNED_RGB_16,
+      fetch_texel_1d_signed_rgb_16,
+      fetch_texel_2d_signed_rgb_16,
+      fetch_texel_3d_signed_rgb_16,
+      store_texel_signed_rgb_16
+   },
+   {
+      MESA_FORMAT_SIGNED_RGBA_16,
+      fetch_texel_1d_signed_rgba_16,
+      fetch_texel_2d_signed_rgba_16,
+      fetch_texel_3d_signed_rgba_16,
+      store_texel_signed_rgba_16
+   },
 };
 
 
 static FetchTexelFuncF
 _mesa_get_texel_fetch_func(gl_format format, GLuint dims)
 {
-   FetchTexelFuncF f = NULL;
-   GLuint i;
-   /* XXX replace loop with direct table lookup */
-   for (i = 0; i < MESA_FORMAT_COUNT; i++) {
-      if (texfetch_funcs[i].Name == format) {
-         switch (dims) {
-         case 1:
-            f = texfetch_funcs[i].Fetch1D;
-            break;
-         case 2:
-            f = texfetch_funcs[i].Fetch2D;
-            break;
-         case 3:
-            f = texfetch_funcs[i].Fetch3D;
-            break;
-         }
-         if (!f)
-            f = fetch_null_texelf;
-         return f;
-      }
+#ifdef DEBUG
+   /* check that the table entries are sorted by format name */
+   gl_format fmt;
+   for (fmt = 0; fmt < MESA_FORMAT_COUNT; fmt++) {
+      assert(texfetch_funcs[fmt].Name == fmt);
+   }
+#endif
+
+   assert(Elements(texfetch_funcs) == MESA_FORMAT_COUNT);
+   assert(format < MESA_FORMAT_COUNT);
+
+   switch (dims) {
+   case 1:
+      return texfetch_funcs[format].Fetch1D;
+   case 2:
+      return texfetch_funcs[format].Fetch2D;
+   case 3:
+      return texfetch_funcs[format].Fetch3D;
+   default:
+      assert(0 && "bad dims in _mesa_get_texel_fetch_func");
+      return NULL;
    }
-   return NULL;
 }
 
 
 StoreTexelFunc
 _mesa_get_texel_store_func(gl_format format)
 {
-   GLuint i;
-   /* XXX replace loop with direct table lookup */
-   for (i = 0; i < MESA_FORMAT_COUNT; i++) {
-      if (texfetch_funcs[i].Name == format) {
-         if (texfetch_funcs[i].StoreTexel)
-            return texfetch_funcs[i].StoreTexel;
-         else
-            return store_null_texel;
-      }
-   }
-   return NULL;
+   assert(format < MESA_FORMAT_COUNT);
+   return texfetch_funcs[format].StoreTexel;
 }
 
 
-
 /**
  * Adaptor for fetching a GLchan texel from a float-valued texture.
  */
index e6772c89f36ae17f5dfbc036d9da1a0d9b1d7aa2..4df2b19181a458a780504d4a4b13f77d439ef107 100644 (file)
@@ -1209,16 +1209,86 @@ static void FETCH(dudv8)(const struct gl_texture_image *texImage,
    texel[ACOMP] = 0;
 }
 
+
+/* MESA_FORMAT_SIGNED_R8 ***********************************************/
+
+static void FETCH(signed_r8)( const struct gl_texture_image *texImage,
+                              GLint i, GLint j, GLint k, GLfloat *texel )
+{
+   const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1);
+   texel[RCOMP] = BYTE_TO_FLOAT_TEX( s );
+   texel[GCOMP] = 0.0F;
+   texel[BCOMP] = 0.0F;
+   texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void store_texel_signed_r8(struct gl_texture_image *texImage,
+                                  GLint i, GLint j, GLint k, const void *texel)
+{
+   const GLbyte *rgba = (const GLbyte *) texel;
+   GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1);
+   *dst = rgba[RCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RG88 ***********************************************/
+
+static void FETCH(signed_rg88)( const struct gl_texture_image *texImage,
+                                GLint i, GLint j, GLint k, GLfloat *texel )
+{
+   const GLushort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+   texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) );
+   texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) );
+   texel[BCOMP] = 0.0F;
+   texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void store_texel_signed_rg88(struct gl_texture_image *texImage,
+                                    GLint i, GLint j, GLint k, const void *texel)
+{
+   const GLbyte *rg = (const GLbyte *) texel;
+   GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 2);
+   *dst = PACK_COLOR_88(rg[RCOMP], rg[GCOMP]);
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RGBX8888 ***********************************************/
+
+static void FETCH(signed_rgbx8888)( const struct gl_texture_image *texImage,
+                                   GLint i, GLint j, GLint k, GLfloat *texel )
+{
+   const GLuint s = *TEXEL_ADDR(GLuint, texImage, i, j, k, 1);
+   texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 24) );
+   texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 16) );
+   texel[BCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >>  8) );
+   texel[ACOMP] = 1.0f;
+}
+
+#if DIM == 3
+static void store_texel_signed_rgbx8888(struct gl_texture_image *texImage,
+                                        GLint i, GLint j, GLint k, const void *texel)
+{
+   const GLbyte *rgba = (const GLbyte *) texel;
+   GLuint *dst = TEXEL_ADDR(GLuint, texImage, i, j, k, 1);
+   *dst = PACK_COLOR_8888(rgba[RCOMP], rgba[GCOMP], rgba[BCOMP], 255);
+}
+#endif
+
+
 /* MESA_FORMAT_SIGNED_RGBA8888 ***********************************************/
 
 static void FETCH(signed_rgba8888)( const struct gl_texture_image *texImage,
                                    GLint i, GLint j, GLint k, GLfloat *texel )
 {
    const GLuint s = *TEXEL_ADDR(GLuint, texImage, i, j, k, 1);
-   texel[RCOMP] = BYTE_TO_FLOAT_TEX( (s >> 24)        );
-   texel[GCOMP] = BYTE_TO_FLOAT_TEX( (s >> 16) & 0xff );
-   texel[BCOMP] = BYTE_TO_FLOAT_TEX( (s >>  8) & 0xff );
-   texel[ACOMP] = BYTE_TO_FLOAT_TEX( (s      ) & 0xff );
+   texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 24) );
+   texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 16) );
+   texel[BCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >>  8) );
+   texel[ACOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s      ) );
 }
 
 #if DIM == 3
@@ -1235,10 +1305,10 @@ static void FETCH(signed_rgba8888_rev)( const struct gl_texture_image *texImage,
                                         GLint i, GLint j, GLint k, GLfloat *texel )
 {
    const GLuint s = *TEXEL_ADDR(GLuint, texImage, i, j, k, 1);
-   texel[RCOMP] = BYTE_TO_FLOAT_TEX( (s      ) & 0xff );
-   texel[GCOMP] = BYTE_TO_FLOAT_TEX( (s >>  8) & 0xff );
-   texel[BCOMP] = BYTE_TO_FLOAT_TEX( (s >> 16) & 0xff );
-   texel[ACOMP] = BYTE_TO_FLOAT_TEX( (s >> 24)        );
+   texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s      ) );
+   texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >>  8) );
+   texel[BCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 16) );
+   texel[ACOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 24) );
 }
 
 #if DIM == 3
@@ -1253,6 +1323,113 @@ static void store_texel_signed_rgba8888_rev(struct gl_texture_image *texImage,
 
 
 
+/* MESA_FORMAT_SIGNED_R_16 ***********************************************/
+
+static void
+FETCH(signed_r_16)(const struct gl_texture_image *texImage,
+                   GLint i, GLint j, GLint k, GLfloat *texel)
+{
+   const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+   texel[RCOMP] = SHORT_TO_FLOAT_TEX( s );
+   texel[GCOMP] = 0.0F;
+   texel[BCOMP] = 0.0F;
+   texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void
+store_texel_signed_r_16(struct gl_texture_image *texImage,
+                        GLint i, GLint j, GLint k, const void *texel)
+{
+   const GLshort *rgba = (const GLshort *) texel;
+   GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+   *dst = rgba[0];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RG_16 ***********************************************/
+
+static void
+FETCH(signed_rg_16)(const struct gl_texture_image *texImage,
+                    GLint i, GLint j, GLint k, GLfloat *texel)
+{
+   const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 2);
+   texel[RCOMP] = SHORT_TO_FLOAT_TEX( s[0] );
+   texel[GCOMP] = SHORT_TO_FLOAT_TEX( s[1] );
+   texel[BCOMP] = 0.0F;
+   texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void
+store_texel_signed_rg_16(struct gl_texture_image *texImage,
+                         GLint i, GLint j, GLint k, const void *texel)
+{
+   const GLshort *rgba = (const GLshort *) texel;
+   GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 2);
+   dst[0] = rgba[RCOMP];
+   dst[1] = rgba[GCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RGB_16 ***********************************************/
+
+static void 
+FETCH(signed_rgb_16)(const struct gl_texture_image *texImage,
+                     GLint i, GLint j, GLint k, GLfloat *texel)
+{
+   const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 3);
+   texel[RCOMP] = SHORT_TO_FLOAT_TEX( s[0] );
+   texel[GCOMP] = SHORT_TO_FLOAT_TEX( s[1] );
+   texel[BCOMP] = SHORT_TO_FLOAT_TEX( s[3] );
+   texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void
+store_texel_signed_rgb_16(struct gl_texture_image *texImage,
+                          GLint i, GLint j, GLint k, const void *texel)
+{
+   const GLshort *rgba = (const GLshort *) texel;
+   GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 3);
+   dst[0] = rgba[RCOMP];
+   dst[1] = rgba[GCOMP];
+   dst[2] = rgba[BCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RGB_16 ***********************************************/
+
+static void
+FETCH(signed_rgba_16)(const struct gl_texture_image *texImage,
+                      GLint i, GLint j, GLint k, GLfloat *texel)
+{
+   const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 4);
+   texel[RCOMP] = SHORT_TO_FLOAT_TEX( s[0] );
+   texel[GCOMP] = SHORT_TO_FLOAT_TEX( s[1] );
+   texel[BCOMP] = SHORT_TO_FLOAT_TEX( s[3] );
+   texel[ACOMP] = SHORT_TO_FLOAT_TEX( s[4] );
+}
+
+#if DIM == 3
+static void
+store_texel_signed_rgba_16(struct gl_texture_image *texImage,
+                           GLint i, GLint j, GLint k, const void *texel)
+{
+   const GLshort *rgba = (const GLshort *) texel;
+   GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 4);
+   dst[0] = rgba[RCOMP];
+   dst[1] = rgba[GCOMP];
+   dst[2] = rgba[BCOMP];
+   dst[3] = rgba[ACOMP];
+}
+#endif
+
+
+
 /* MESA_FORMAT_YCBCR *********************************************************/
 
 /* Fetch texel from 1D, 2D or 3D ycbcr texture, return 4 GLfloats.
index 096945a6432b4dc50c797bd543848a177c1a9675..06e6fd92fca9cec593f03fcd9eb70659c41031f9 100644 (file)
@@ -294,6 +294,32 @@ _mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat,
       }
    }
 
+   if (ctx->VersionMajor * 10 + ctx->VersionMinor >= 31) {
+      switch (internalFormat) {
+         case GL_RED_SNORM:
+         case GL_R8_SNORM:
+            return MESA_FORMAT_SIGNED_R8;
+         case GL_RG_SNORM:
+         case GL_RG8_SNORM:
+            return MESA_FORMAT_SIGNED_RG88;
+         case GL_RGB_SNORM:
+         case GL_RGB8_SNORM:
+            return MESA_FORMAT_SIGNED_RGBX8888;
+         case GL_RGBA_SNORM:
+         case GL_RGBA8_SNORM:
+            return MESA_FORMAT_SIGNED_RGBA8888;
+         case GL_R16_SNORM:
+            return MESA_FORMAT_SIGNED_R_16;
+         case GL_RG16_SNORM:
+            return MESA_FORMAT_SIGNED_RG_16;
+         case GL_RGB16_SNORM:
+            return MESA_FORMAT_SIGNED_RGB_16;
+         case GL_RGBA16_SNORM:
+            return MESA_FORMAT_SIGNED_RGBA_16;
+         default:
+            ; /* fall-through */
+      }
+   }
 
 #if FEATURE_EXT_texture_sRGB
    if (ctx->Extensions.EXT_texture_sRGB) {
index 0c583ed14d306849c8c16ab0f3694b8ede7e56f6..0b55097bd694777702e17a3121ff33d561d99cff 100644 (file)
@@ -358,34 +358,6 @@ _mesa_base_tex_format( GLcontext *ctx, GLint internalFormat )
 }
 
 
-/**
- * Test if it is a supported compressed format.
- * 
- * \param internalFormat the internal format token provided by the user.
- * 
- * \ret GL_TRUE if \p internalFormat is a supported compressed format, or
- * GL_FALSE otherwise.
- *
- * Currently only GL_COMPRESSED_RGB_FXT1_3DFX and GL_COMPRESSED_RGBA_FXT1_3DFX
- * are supported.
- */
-static GLboolean
-is_compressed_format(GLcontext *ctx, GLenum internalFormat)
-{
-   GLint supported[100]; /* 100 should be plenty */
-   GLuint i, n;
-
-   n = _mesa_get_compressed_formats(ctx, supported, GL_TRUE);
-   ASSERT(n < 100);
-   for (i = 0; i < n; i++) {
-      if ((GLint) internalFormat == supported[i]) {
-         return GL_TRUE;
-      }
-   }
-   return GL_FALSE;
-}
-
-
 /**
  * For cube map faces, return a face index in [0,5].
  * For other targets return 0;
@@ -1308,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 */
       }
@@ -1324,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;
@@ -1350,7 +1322,7 @@ texture_error_check( GLcontext *ctx, GLenum target,
    }
 
    /* additional checks for compressed textures */
-   if (is_compressed_format(ctx, internalFormat)) {
+   if (_mesa_is_compressed_format(ctx, internalFormat)) {
       if (!target_can_be_compressed(ctx, target) && !isProxy) {
          _mesa_error(ctx, GL_INVALID_ENUM,
                      "glTexImage%d(target)", dimensions);
@@ -1716,7 +1688,7 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions,
       return GL_TRUE;
    }
 
-   if (is_compressed_format(ctx, internalFormat)) {
+   if (_mesa_is_compressed_format(ctx, internalFormat)) {
       if (!target_can_be_compressed(ctx, target)) {
          _mesa_error(ctx, GL_INVALID_ENUM,
                      "glCopyTexImage%d(target)", dimensions);
@@ -3114,7 +3086,7 @@ compressed_texture_error_check(GLcontext *ctx, GLint dimensions,
    maxTextureSize = 1 << (maxLevels - 1);
 
    /* This will detect any invalid internalFormat value */
-   if (!is_compressed_format(ctx, internalFormat))
+   if (!_mesa_is_compressed_format(ctx, internalFormat))
       return GL_INVALID_ENUM;
 
    /* This should really never fail */
@@ -3219,7 +3191,7 @@ compressed_subtexture_error_check(GLcontext *ctx, GLint dimensions,
    maxTextureSize = 1 << (maxLevels - 1);
 
    /* this will catch any invalid compressed format token */
-   if (!is_compressed_format(ctx, format))
+   if (!_mesa_is_compressed_format(ctx, format))
       return GL_INVALID_ENUM;
 
    if (width < 1 || width > maxTextureSize)
index 2753b55c36aeb868fe7762f78c116ad13d24167d..de37e340393b172bf98011f97c6c9a4635ec92eb 100644 (file)
@@ -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;
index 65e3fcaa9536d16702658070a0e946b771877550..94c0894de1f7244175a0851445a023de668429ba 100644 (file)
@@ -2551,6 +2551,147 @@ _mesa_texstore_dudv8(TEXSTORE_PARAMS)
    return GL_TRUE;
 }
 
+
+/**
+ * Store a texture in MESA_FORMAT_SIGNED_R8 format.
+ */
+static GLboolean
+_mesa_texstore_signed_r8(TEXSTORE_PARAMS)
+{
+   const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
+   const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
+
+   ASSERT(dstFormat == MESA_FORMAT_SIGNED_R8);
+   ASSERT(texelBytes == 1);
+
+   /* XXX look at adding optimized paths */
+   {
+      /* general path */
+      const GLfloat *tempImage = make_temp_float_image(ctx, dims,
+                                                 baseInternalFormat,
+                                                 baseFormat,
+                                                 srcWidth, srcHeight, srcDepth,
+                                                 srcFormat, srcType, srcAddr,
+                                                 srcPacking);
+      const GLfloat *srcRow = tempImage;
+      GLint img, row, col;
+      if (!tempImage)
+         return GL_FALSE;
+      _mesa_adjust_image_for_convolution(ctx, dims, &srcWidth, &srcHeight);
+      for (img = 0; img < srcDepth; img++) {
+         GLubyte *dstRow = (GLubyte *) dstAddr
+            + dstImageOffsets[dstZoffset + img] * texelBytes
+            + dstYoffset * dstRowStride
+            + dstXoffset * texelBytes;
+         for (row = 0; row < srcHeight; row++) {
+            GLubyte *dstB = (GLubyte *) dstRow;
+            for (col = 0; col < srcWidth; col++) {
+               dstB[col] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]);
+            }
+            dstRow += dstRowStride;
+         }
+      }
+      free((void *) tempImage);
+   }
+   return GL_TRUE;
+}
+
+
+/**
+ * Store a texture in MESA_FORMAT_SIGNED_RG88 format.
+ */
+static GLboolean
+_mesa_texstore_signed_rg88(TEXSTORE_PARAMS)
+{
+   const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
+   const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
+
+   ASSERT(dstFormat == MESA_FORMAT_SIGNED_RG88);
+   ASSERT(texelBytes == 1);
+
+   /* XXX look at adding optimized paths */
+   {
+      /* general path */
+      const GLfloat *tempImage = make_temp_float_image(ctx, dims,
+                                                 baseInternalFormat,
+                                                 baseFormat,
+                                                 srcWidth, srcHeight, srcDepth,
+                                                 srcFormat, srcType, srcAddr,
+                                                 srcPacking);
+      const GLfloat *srcRow = tempImage;
+      GLint img, row, col;
+      if (!tempImage)
+         return GL_FALSE;
+      _mesa_adjust_image_for_convolution(ctx, dims, &srcWidth, &srcHeight);
+      for (img = 0; img < srcDepth; img++) {
+         GLubyte *dstRow = (GLubyte *) dstAddr
+            + dstImageOffsets[dstZoffset + img] * texelBytes
+            + dstYoffset * dstRowStride
+            + dstXoffset * texelBytes;
+         for (row = 0; row < srcHeight; row++) {
+            GLushort *dstUS = (GLushort *) dstRow;
+            for (col = 0; col < srcWidth; col++) {
+               dstUS[col] = PACK_COLOR_88(FLOAT_TO_BYTE_TEX(srcRow[RCOMP]),
+                                          FLOAT_TO_BYTE_TEX(srcRow[GCOMP]));
+            }
+            dstRow += dstRowStride;
+         }
+      }
+      free((void *) tempImage);
+   }
+   return GL_TRUE;
+}
+
+
+/**
+ * Store a texture in MESA_FORMAT_SIGNED_RGBX8888.
+ */
+static GLboolean
+_mesa_texstore_signed_rgbx8888(TEXSTORE_PARAMS)
+{
+   const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
+   const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
+
+   ASSERT(dstFormat == MESA_FORMAT_SIGNED_RGBX8888);
+   ASSERT(texelBytes == 4);
+
+   {
+      /* general path */
+      const GLfloat *tempImage = make_temp_float_image(ctx, dims,
+                                                 baseInternalFormat,
+                                                 baseFormat,
+                                                 srcWidth, srcHeight, srcDepth,
+                                                 srcFormat, srcType, srcAddr,
+                                                 srcPacking);
+      const GLfloat *srcRow = tempImage;
+      GLint img, row, col;
+      if (!tempImage)
+         return GL_FALSE;
+      _mesa_adjust_image_for_convolution(ctx, dims, &srcWidth, &srcHeight);
+      for (img = 0; img < srcDepth; img++) {
+         GLubyte *dstRow = (GLubyte *) dstAddr
+            + dstImageOffsets[dstZoffset + img] * texelBytes
+            + dstYoffset * dstRowStride
+            + dstXoffset * texelBytes;
+         for (row = 0; row < srcHeight; row++) {
+            GLuint *dstUI = (GLuint *) dstRow;
+            for (col = 0; col < srcWidth; col++) {
+               dstUI[col] = PACK_COLOR_8888( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]),
+                                             FLOAT_TO_BYTE_TEX(srcRow[GCOMP]),
+                                             FLOAT_TO_BYTE_TEX(srcRow[BCOMP]),
+                                             0xff );
+               srcRow += 4;
+            }
+            dstRow += dstRowStride;
+         }
+      }
+      free((void *) tempImage);
+   }
+   return GL_TRUE;
+}
+
+
+
 /**
  * Store a texture in MESA_FORMAT_SIGNED_RGBA8888 or MESA_FORMAT_SIGNED_RGBA8888_REV
  */
@@ -2672,6 +2813,7 @@ _mesa_texstore_signed_rgba8888(TEXSTORE_PARAMS)
    return GL_TRUE;
 }
 
+
 /**
  * Store a combined depth/stencil texture image.
  */
@@ -3197,9 +3339,18 @@ texstore_funcs[MESA_FORMAT_COUNT] =
    { MESA_FORMAT_INTENSITY_FLOAT32, _mesa_texstore_rgba_float32 },
    { MESA_FORMAT_INTENSITY_FLOAT16, _mesa_texstore_rgba_float16 },
    { MESA_FORMAT_DUDV8, _mesa_texstore_dudv8 },
+
+   { MESA_FORMAT_SIGNED_R8, _mesa_texstore_signed_r8 },
+   { MESA_FORMAT_SIGNED_RG88, _mesa_texstore_signed_rg88 },
+   { MESA_FORMAT_SIGNED_RGBX8888, _mesa_texstore_signed_rgbx8888 },
+
    { MESA_FORMAT_SIGNED_RGBA8888, _mesa_texstore_signed_rgba8888 },
    { MESA_FORMAT_SIGNED_RGBA8888_REV, _mesa_texstore_signed_rgba8888 },
-   { MESA_FORMAT_SIGNED_RGBA_16, NULL },
+
+   { MESA_FORMAT_SIGNED_R_16, NULL/*_mesa_texstore_signed_r16*/ },
+   { MESA_FORMAT_SIGNED_RG_16, NULL/*_mesa_texstore_signed_rg16*/ },
+   { MESA_FORMAT_SIGNED_RGB_16, NULL/*_mesa_texstore_signed_rgb16*/ },
+   { MESA_FORMAT_SIGNED_RGBA_16, NULL/*_mesa_texstore_signed_rgba16*/ },
 };
 
 
index e5ef25ec38a5acb5e7e5ee1eb4190105c83c8e8d..99c4b2baa5f0e3d4152edc5be59784c20bb799e2 100644 (file)
@@ -5557,7 +5557,6 @@ make_error_string(const char *fmt, ...)
    char *str;
    va_list args;
 
-   va_start(args, fmt);
 
    /* Call vsnprintf once to determine how large the final string is.  Call it
     * again to do the actual formatting.  from the vsnprintf manual page:
@@ -5566,15 +5565,17 @@ make_error_string(const char *fmt, ...)
     *    characters printed  (not including the trailing '\0' used to end
     *    output to strings).
     */
+   va_start(args, fmt);
    length = 1 + vsnprintf(NULL, 0, fmt, args);
+   va_end(args);
 
    str = malloc(length);
    if (str) {
+      va_start(args, fmt);
       vsnprintf(str, length, fmt, args);
+      va_end(args);
    }
 
-   va_end(args);
-
    return str;
 }
 
index 299e2477e485795cd93303ec7aff9140b1c6ad36..06c2db7a07e4d4b69b99960731588ca68caa7c09 100644 (file)
@@ -2596,7 +2596,6 @@ make_error_string(const char *fmt, ...)
    char *str;
    va_list args;
 
-   va_start(args, fmt);
 
    /* Call vsnprintf once to determine how large the final string is.  Call it
     * again to do the actual formatting.  from the vsnprintf manual page:
@@ -2605,15 +2604,17 @@ make_error_string(const char *fmt, ...)
     *    characters printed  (not including the trailing '\0' used to end
     *    output to strings).
     */
+   va_start(args, fmt);
    length = 1 + vsnprintf(NULL, 0, fmt, args);
+   va_end(args);
 
    str = malloc(length);
    if (str) {
+      va_start(args, fmt);
       vsnprintf(str, length, fmt, args);
+      va_end(args);
    }
 
-   va_end(args);
-
    return str;
 }
 
index fa79632c18bbf80b055e60eacaa80ea44140bf30..27ac1da9ad8aafb49c5b9f40fc573a4b5996d014 100644 (file)
@@ -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);
 
index 7c0ea0c11484290c19661adfb0a07206e3448838..974c4a31315470f8c36a03999d5afa1478d8f0d1 100644 (file)
@@ -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;
index 62603503dd9ad32d4a278dc4d3d83210e970d7ed..c223004b22b9bbcfb4a126e5d80b6c116ca4ee99 100644 (file)
@@ -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;
 }
 
index 225612a936940d980da13472ca309d22b39b3fe9..8e3a8ebc1aaae3c6987c01eac2e77cff65c81afb 100644 (file)
@@ -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;
    }
index f71fde1d7271741081bd367f27e0caf0c55513b8..b16778f8ad4ce42449296e02aadf14b25a740121 100644 (file)
@@ -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;
          }
@@ -1028,7 +1029,10 @@ _slang_link(GLcontext *ctx,
 
    if (!vertNotify || !fragNotify) {
       /* driver rejected one/both of the vertex/fragment programs */
-      link_error(shProg, "Vertex and/or fragment program rejected by driver\n");
+      if (!shProg->InfoLog) {
+        link_error(shProg,
+                   "Vertex and/or fragment program rejected by driver\n");
+      }
    }
    else {
       shProg->LinkStatus = (shProg->VertexProgram || shProg->FragmentProgram);
index 3c75523c42fbdfd3e04eb5942f721bc9df237022..6b34f395fdfa00fe2084f6f96c145200427e4d2e 100644 (file)
@@ -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
index e77404f692861ac92a47f149b0224aa4af5aabfc..c1d57409a436e334812a7276e294b6c35d701be5 100644 (file)
@@ -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));
 }
 
index 1cd55463379b16d44610b43afb7c0b9cfce41bab..52c507da3b3d2948051b5b67446c84ed133190e4 100644 (file)
@@ -153,6 +153,16 @@ update_framebuffer_state( struct st_context *st )
          pipe_surface_reference(&framebuffer->zsbuf, NULL);
    }
 
+#ifdef DEBUG
+   /* Make sure the resource binding flags were set properly */
+   for (i = 0; i < framebuffer->nr_cbufs; i++) {
+      assert(framebuffer->cbufs[i]->texture->bind & PIPE_BIND_RENDER_TARGET);
+   }
+   if (framebuffer->zsbuf) {
+      assert(framebuffer->zsbuf->texture->bind & PIPE_BIND_DEPTH_STENCIL);
+   }
+#endif
+
    cso_set_framebuffer(st->cso_context, framebuffer);
 }
 
index e8e67f80305d57245a884809eebcb6cc6ca8940c..29c4d092bf08359a13d1a2ead0e94b4c20ab0997 100644 (file)
@@ -115,7 +115,8 @@ make_state_key(GLcontext *ctx,  struct state_key *key)
 static struct pipe_resource *
 create_color_map_texture(GLcontext *ctx)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    struct pipe_resource *pt;
    enum pipe_format format;
    const uint texSize = 256; /* simple, and usually perfect */
@@ -125,7 +126,7 @@ create_color_map_texture(GLcontext *ctx)
                              PIPE_TEXTURE_2D, PIPE_BIND_SAMPLER_VIEW);
 
    /* create texture for color map/table */
-   pt = st_texture_create(ctx->st, PIPE_TEXTURE_2D, format, 0,
+   pt = st_texture_create(st, PIPE_TEXTURE_2D, format, 0,
                           texSize, texSize, 1, PIPE_BIND_SAMPLER_VIEW);
    return pt;
 }
@@ -137,7 +138,8 @@ create_color_map_texture(GLcontext *ctx)
 static void
 load_color_map_texture(GLcontext *ctx, struct pipe_resource *pt)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    struct pipe_transfer *transfer;
    const GLuint rSize = ctx->PixelMaps.RtoR.Size;
    const GLuint gSize = ctx->PixelMaps.GtoG.Size;
@@ -185,7 +187,7 @@ load_color_map_texture(GLcontext *ctx, struct pipe_resource *pt)
 static struct gl_fragment_program *
 get_pixel_transfer_program(GLcontext *ctx, const struct state_key *key)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct prog_instruction inst[MAX_INST];
    struct gl_program_parameter_list *params;
    struct gl_fragment_program *fp;
@@ -256,8 +258,9 @@ get_pixel_transfer_program(GLcontext *ctx, const struct state_key *key)
       /* create the colormap/texture now if not already done */
       if (!st->pixel_xfer.pixelmap_texture) {
          st->pixel_xfer.pixelmap_texture = create_color_map_texture(ctx);
-         st->pixel_xfer.pixelmap_sampler_view = st_create_texture_sampler_view(ctx->st->pipe,
-                                                                             st->pixel_xfer.pixelmap_texture);
+         st->pixel_xfer.pixelmap_sampler_view =
+            st_create_texture_sampler_view(st->pipe,
+                                           st->pixel_xfer.pixelmap_texture);
       }
 
       /* with a little effort, we can do four pixel map look-ups with
index a8262a5e1aa3c4639853b056cfc4256fe4d2a592..92fe72d4df60ba947a2694cccf80b90d5c61e43e 100644 (file)
@@ -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.
index f4294ac1e6f0d40705d9a636b62dbf3e71d801e5..2575adda8fc631162b38e368df967d5a409b056e 100644 (file)
@@ -138,7 +138,6 @@ 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;
@@ -149,8 +148,6 @@ finalize_textures(struct st_context *st)
                st->missing_textures = GL_TRUE;
                continue;
             }
-
-            stObj->teximage_realloc = TRUE;
          }
       }
    }
index 2732969d956eeb0631a5c6ad7c49f43a94c055b3..0101837f9990bdd518694cba0dd452f381718a2c 100644 (file)
@@ -223,7 +223,7 @@ accum_return(GLcontext *ctx, GLfloat value,
              struct st_renderbuffer *acc_strb,
              struct st_renderbuffer *color_strb)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    const GLubyte *colormask = ctx->Color.ColorMask[0];
    enum pipe_transfer_usage usage;
    struct pipe_transfer *color_trans;
@@ -287,7 +287,7 @@ accum_return(GLcontext *ctx, GLfloat value,
 static void
 st_Accum(GLcontext *ctx, GLenum op, GLfloat value)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct st_renderbuffer *acc_strb
      = st_renderbuffer(ctx->DrawBuffer->Attachment[BUFFER_ACCUM].Renderbuffer);
    struct st_renderbuffer *color_strb
index 12bba050a615e74307576432c0024f0f2f159607..797c0ba7f55a9fc6926bcf418136c368b67f8054 100644 (file)
@@ -114,6 +114,7 @@ struct bitmap_cache
 static struct st_fragment_program *
 make_bitmap_fragment_program(GLcontext *ctx, GLuint samplerIndex)
 {
+   struct st_context *st = st_context(ctx);
    struct st_fragment_program *stfp;
    struct gl_program *p;
    GLuint ic = 0;
@@ -145,7 +146,7 @@ make_bitmap_fragment_program(GLcontext *ctx, GLuint samplerIndex)
    p->Instructions[ic].Opcode = OPCODE_KIL;
    p->Instructions[ic].SrcReg[0].File = PROGRAM_TEMPORARY;
 
-   if (ctx->st->bitmap.tex_format == PIPE_FORMAT_L8_UNORM)
+   if (st->bitmap.tex_format == PIPE_FORMAT_L8_UNORM)
       p->Instructions[ic].SrcReg[0].Swizzle = SWIZZLE_XXXX;
 
    p->Instructions[ic].SrcReg[0].Index = 0;
@@ -187,7 +188,7 @@ find_free_bit(uint bitfield)
 static struct st_fragment_program *
 combined_bitmap_fragment_program(GLcontext *ctx)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct st_fragment_program *stfp = st->fp;
 
    if (!stfp->bitmap_program) {
@@ -258,7 +259,8 @@ make_bitmap_texture(GLcontext *ctx, GLsizei width, GLsizei height,
                     const struct gl_pixelstore_attrib *unpack,
                     const GLubyte *bitmap)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    struct pipe_transfer *transfer;
    ubyte *dest;
    struct pipe_resource *pt;
@@ -272,7 +274,7 @@ make_bitmap_texture(GLcontext *ctx, GLsizei width, GLsizei height,
    /**
     * Create texture to hold bitmap pattern.
     */
-   pt = st_texture_create(ctx->st, PIPE_TEXTURE_2D, ctx->st->bitmap.tex_format,
+   pt = st_texture_create(st, PIPE_TEXTURE_2D, st->bitmap.tex_format,
                           0, width, height, 1,
                           PIPE_BIND_SAMPLER_VIEW);
    if (!pt) {
@@ -280,7 +282,7 @@ make_bitmap_texture(GLcontext *ctx, GLsizei width, GLsizei height,
       return NULL;
    }
 
-   transfer = st_no_flush_get_tex_transfer(st_context(ctx), pt, 0, 0, 0,
+   transfer = st_no_flush_get_tex_transfer(st, pt, 0, 0, 0,
                                           PIPE_TRANSFER_WRITE,
                                           0, 0, width, height);
 
@@ -288,7 +290,7 @@ make_bitmap_texture(GLcontext *ctx, GLsizei width, GLsizei height,
 
    /* Put image into texture transfer */
    memset(dest, 0xff, height * transfer->stride);
-   unpack_bitmap(ctx->st, 0, 0, width, height, unpack, bitmap,
+   unpack_bitmap(st, 0, 0, width, height, unpack, bitmap,
                  dest, transfer->stride);
 
    _mesa_unmap_pbo_source(ctx, unpack);
@@ -400,9 +402,9 @@ draw_bitmap_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z,
                  struct pipe_sampler_view *sv,
                  const GLfloat *color)
 {
-   struct st_context *st = ctx->st;
-   struct pipe_context *pipe = ctx->st->pipe;
-   struct cso_context *cso = ctx->st->cso_context;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
+   struct cso_context *cso = st->cso_context;
    struct st_fragment_program *stfp;
    GLuint maxSize;
    GLuint offset;
@@ -732,7 +734,7 @@ static void
 st_Bitmap(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
           const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap )
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct pipe_resource *pt;
 
    if (width == 0 || height == 0)
index d6fdfaccd63161f6a9098dbb4a663504ae10420d..1c8dc0c07fb1b19c4cb75edacb0483d83167bdae 100644 (file)
@@ -68,7 +68,7 @@ st_BlitFramebuffer(GLcontext *ctx,
 {
    const GLbitfield depthStencil = (GL_DEPTH_BUFFER_BIT |
                                     GL_STENCIL_BUFFER_BIT);
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct pipe_context *pipe = st->pipe;
    const uint pFilter = ((filter == GL_NEAREST)
                          ? PIPE_TEX_MIPFILTER_NEAREST
index 2f77aff7a6c32389efb37a26f34d3f4e553470dc..736180ddc6c2d1d203322baef10f20e1a160d623 100644 (file)
@@ -109,11 +109,10 @@ st_destroy_clear(struct st_context *st)
  * Coords are clip coords with y=0=bottom.
  */
 static void
-draw_quad(GLcontext *ctx,
+draw_quad(struct st_context *st,
           float x0, float y0, float x1, float y1, GLfloat z,
           const GLfloat color[4])
 {
-   struct st_context *st = ctx->st;
    struct pipe_context *pipe = st->pipe;
 
    /* XXX: Need to improve buffer_write to allow NO_WAIT (as well as
@@ -193,7 +192,7 @@ static void
 clear_with_quad(GLcontext *ctx,
                 GLboolean color, GLboolean depth, GLboolean stencil)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    const struct gl_framebuffer *fb = ctx->DrawBuffer;
    const GLfloat fb_width = (GLfloat) fb->Width;
    const GLfloat fb_height = (GLfloat) fb->Height;
@@ -295,7 +294,7 @@ clear_with_quad(GLcontext *ctx,
    cso_set_vertex_shader_handle(st->cso_context, st->clear.vs);
 
    /* draw quad matching scissor rect (XXX verify coord round-off) */
-   draw_quad(ctx, x0, y0, x1, y1,
+   draw_quad(st, x0, y0, x1, y1,
              (GLfloat) ctx->Depth.Clear, ctx->Color.ClearColor);
 
    /* Restore pipe state */
@@ -448,7 +447,7 @@ st_Clear(GLcontext *ctx, GLbitfield mask)
 {
    static const GLbitfield BUFFER_BITS_DS
       = (BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL);
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct gl_renderbuffer *depthRb
       = ctx->DrawBuffer->Attachment[BUFFER_DEPTH].Renderbuffer;
    struct gl_renderbuffer *stencilRb
@@ -530,8 +529,8 @@ st_Clear(GLcontext *ctx, GLbitfield mask)
                       mask & BUFFER_BIT_DEPTH,
                       mask & BUFFER_BIT_STENCIL);
    } else if (clear_buffers)
-      ctx->st->pipe->clear(ctx->st->pipe, clear_buffers, ctx->Color.ClearColor,
-                           ctx->Depth.Clear, ctx->Stencil.Clear);
+      st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColor,
+                      ctx->Depth.Clear, ctx->Stencil.Clear);
 
    if (mask & BUFFER_BIT_ACCUM)
       st_clear_accum_buffer(ctx,
index 8483b93bd85630b50ea87681c7918c8b9d3b728b..b509d43b7c6975ce6b3be29b3925c6da31daf6f0 100644 (file)
@@ -51,7 +51,7 @@ st_BeginConditionalRender(GLcontext *ctx, struct gl_query_object *q,
                           GLenum mode)
 {
    struct st_query_object *stq = st_query_object(q);
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    uint m;
 
    switch (mode) {
@@ -82,7 +82,7 @@ st_BeginConditionalRender(GLcontext *ctx, struct gl_query_object *q,
 static void
 st_EndConditionalRender(GLcontext *ctx, struct gl_query_object *q)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    (void) q;
    pipe->render_condition(pipe, NULL, 0);
 }
index 2c18ded2abf0135c84fd959d6dc7e44910b5ff90..e059002f157d6e6e1f43beb447d1eebdd9e4975c 100644 (file)
@@ -858,7 +858,7 @@ copy_stencil_pixels(GLcontext *ctx, GLint srcx, GLint srcy,
                     GLint dstx, GLint dsty)
 {
    struct st_renderbuffer *rbDraw = st_renderbuffer(ctx->DrawBuffer->_StencilBuffer);
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    enum pipe_transfer_usage usage;
    struct pipe_transfer *ptDraw;
    ubyte *drawMap;
index a924f8722327921c5867a6b12270cf571235cd3b..0fa1848e23233026b5696a9c3a4b282b0ac9b145 100644 (file)
@@ -74,7 +74,7 @@ st_egl_image_target_renderbuffer_storage(GLcontext *ctx,
                                         struct gl_renderbuffer *rb,
                                         GLeglImageOES image_handle)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct st_renderbuffer *strb = st_renderbuffer(rb);
    struct pipe_surface *ps;
    unsigned usage;
@@ -138,7 +138,7 @@ st_egl_image_target_texture_2d(GLcontext *ctx, GLenum target,
                               struct gl_texture_image *texImage,
                               GLeglImageOES image_handle)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct pipe_surface *ps;
    unsigned usage;
 
index 1ba1fe1b972a944d01bdec2505855fed763ab3da..c02121fbd1a9a41c860ccff4ef6fce3438aeb285 100644 (file)
@@ -64,7 +64,8 @@ st_renderbuffer_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
                               GLenum internalFormat,
                               GLuint width, GLuint height)
 {
-   struct pipe_screen *screen = ctx->st->pipe->screen;
+   struct st_context *st = st_context(ctx);
+   struct pipe_screen *screen = st->pipe->screen;
    struct st_renderbuffer *strb = st_renderbuffer(rb);
    enum pipe_format format;
 
@@ -312,23 +313,21 @@ st_render_texture(GLcontext *ctx,
                   struct gl_framebuffer *fb,
                   struct gl_renderbuffer_attachment *att)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct pipe_context *pipe = st->pipe;
-   struct pipe_screen *screen = ctx->st->pipe->screen;
+   struct pipe_screen *screen = pipe->screen;
    struct st_renderbuffer *strb;
    struct gl_renderbuffer *rb;
    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);
@@ -349,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;
 
@@ -403,12 +402,13 @@ static void
 st_finish_render_texture(GLcontext *ctx,
                          struct gl_renderbuffer_attachment *att)
 {
+   struct st_context *st = st_context(ctx);
    struct st_renderbuffer *strb = st_renderbuffer(att->Renderbuffer);
 
    if (!strb)
       return;
 
-   st_flush( ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL );
+   st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL);
 
    strb->rtt = NULL;
 
@@ -422,23 +422,19 @@ st_finish_render_texture(GLcontext *ctx,
 
 
 /**
- * Validate a renderbuffer attachment for a particular usage.
+ * Validate a renderbuffer attachment for a particular set of bindings.
  */
-
 static GLboolean
 st_validate_attachment(struct pipe_screen *screen,
                       const struct gl_renderbuffer_attachment *att,
-                      GLuint usage)
+                      unsigned bindings)
 {
-   const struct st_texture_object *stObj =
-      st_texture_object(att->Texture);
+   const struct st_texture_object *stObj = st_texture_object(att->Texture);
 
-   /**
-    * Only validate texture attachments for now, since
+   /* Only validate texture attachments for now, since
     * st_renderbuffer_alloc_storage makes sure that
     * the format is supported.
     */
-
    if (att->Type != GL_TEXTURE)
       return GL_TRUE;
 
@@ -446,10 +442,10 @@ st_validate_attachment(struct pipe_screen *screen,
       return GL_FALSE;
 
    return screen->is_format_supported(screen, stObj->pt->format,
-                                     PIPE_TEXTURE_2D,
-                                     usage, 0);
+                                     PIPE_TEXTURE_2D, bindings, 0);
 }
 
+
 /**
  * Check that the framebuffer configuration is valid in terms of what
  * the driver can support.
@@ -459,7 +455,8 @@ st_validate_attachment(struct pipe_screen *screen,
 static void
 st_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb)
 {
-   struct pipe_screen *screen = ctx->st->pipe->screen;
+   struct st_context *st = st_context(ctx);
+   struct pipe_screen *screen = st->pipe->screen;
    const struct gl_renderbuffer *depthRb =
       fb->Attachment[BUFFER_DEPTH].Renderbuffer;
    const struct gl_renderbuffer *stencilRb =
@@ -500,6 +497,7 @@ st_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb)
 static void
 st_DrawBuffers(GLcontext *ctx, GLsizei count, const GLenum *buffers)
 {
+   struct st_context *st = st_context(ctx);
    GLframebuffer *fb = ctx->DrawBuffer;
    GLuint i;
 
@@ -509,7 +507,7 @@ st_DrawBuffers(GLcontext *ctx, GLsizei count, const GLenum *buffers)
    /* add the renderbuffers on demand */
    for (i = 0; i < fb->_NumColorDrawBuffers; i++) {
       gl_buffer_index idx = fb->_ColorDrawBufferIndexes[i];
-      st_manager_add_color_renderbuffer(ctx->st, fb, idx);
+      st_manager_add_color_renderbuffer(st, fb, idx);
    }
 }
 
@@ -520,12 +518,13 @@ st_DrawBuffers(GLcontext *ctx, GLsizei count, const GLenum *buffers)
 static void
 st_ReadBuffer(GLcontext *ctx, GLenum buffer)
 {
+   struct st_context *st = st_context(ctx);
    GLframebuffer *fb = ctx->ReadBuffer;
 
    (void) buffer;
 
    /* add the renderbuffer on demand */
-   st_manager_add_color_renderbuffer(ctx->st, fb, fb->_ColorReadBufferIndex);
+   st_manager_add_color_renderbuffer(st, fb, fb->_ColorReadBufferIndex);
 }
 
 
index 37b1fb55f4a0bf255aa6c6c5cf3bdc39b9afc51c..c85d3da84a294e4e98ea4b9342089f43de86e59a 100644 (file)
@@ -80,7 +80,7 @@ static void
 feedback_vertex(GLcontext *ctx, const struct draw_context *draw,
                 const struct vertex_header *v)
 {
-   const struct st_context *st = ctx->st;
+   const struct st_context *st = st_context(ctx);
    GLfloat win[4];
    const GLfloat *color, *texcoord;
    GLuint slot;
@@ -271,7 +271,7 @@ draw_glselect_stage(GLcontext *ctx, struct draw_context *draw)
 static void
 st_RenderMode(GLcontext *ctx, GLenum newMode )
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct draw_context *draw = st->draw;
 
    if (newMode == GL_RENDER) {
index 415e8f3d2a2188bd748379e74108c00dc6d23c71..8c9959f954457d7b4d3cc632d1e7b8012db11cc0 100644 (file)
@@ -115,7 +115,7 @@ void st_finish( struct st_context *st )
  */
 static void st_glFlush(GLcontext *ctx)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
 
    /* Don't call st_finish() here.  It is not the state tracker's
     * responsibilty to inject sleeps in the hope of avoiding buffer
@@ -135,7 +135,7 @@ static void st_glFlush(GLcontext *ctx)
  */
 static void st_glFinish(GLcontext *ctx)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
 
    st_finish(st);
 
index c66729b1244336e35a5f47b8e04fad934d16e22b..1896663932c7a617ca9e1a156f768cc5dac67c90 100644 (file)
@@ -61,7 +61,7 @@ st_NewQueryObject(GLcontext *ctx, GLuint id)
 static void
 st_DeleteQuery(GLcontext *ctx, struct gl_query_object *q)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
 
    if (stq->pq) {
@@ -76,7 +76,7 @@ st_DeleteQuery(GLcontext *ctx, struct gl_query_object *q)
 static void
 st_BeginQuery(GLcontext *ctx, struct gl_query_object *q)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
 
    switch (q->Target) {
@@ -96,7 +96,7 @@ st_BeginQuery(GLcontext *ctx, struct gl_query_object *q)
 static void
 st_EndQuery(GLcontext *ctx, struct gl_query_object *q)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
 
    pipe->end_query(pipe, stq->pq);
@@ -106,7 +106,7 @@ st_EndQuery(GLcontext *ctx, struct gl_query_object *q)
 static void
 st_WaitQuery(GLcontext *ctx, struct gl_query_object *q)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
 
    /* this function should only be called if we don't have a ready result */
@@ -128,7 +128,7 @@ st_WaitQuery(GLcontext *ctx, struct gl_query_object *q)
 static void
 st_CheckQuery(GLcontext *ctx, struct gl_query_object *q)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
    assert(!q->Ready);   /* we should not get called if Ready is TRUE */
    q->Ready = pipe->get_query_result(pipe, stq->pq, FALSE, &q->Result);
index 752b411b5fcfd9e7f6a3e29eebe17e8da4799e99..843f3200278d3f79a9bdc76d669451c6e69ac5dd 100644 (file)
@@ -133,7 +133,7 @@ rastpos_point(struct draw_stage *stage, struct prim_header *prim)
 {
    struct rastpos_stage *rs = rastpos_stage(stage);
    GLcontext *ctx = rs->ctx;
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    const GLfloat height = (GLfloat) ctx->DrawBuffer->Height;
    const GLuint *outputMapping = st->vertex_result_to_slot;
    const GLfloat *pos;
@@ -221,7 +221,7 @@ new_draw_rastpos_stage(GLcontext *ctx, struct draw_context *draw)
 static void
 st_RasterPos(GLcontext *ctx, const GLfloat v[4])
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct draw_context *draw = st->draw;
    struct rastpos_stage *rs;
 
@@ -239,7 +239,7 @@ st_RasterPos(GLcontext *ctx, const GLfloat v[4])
    draw_set_rasterize_stage(st->draw, st->rastpos_stage);
 
    /* make sure everything's up to date */
-   st_validate_state(ctx->st);
+   st_validate_state(st);
 
    /* This will get set only if rastpos_point(), above, gets called */
    ctx->Current.RasterPosValid = GL_FALSE;
index 67c3b9adbb9b62fcb322653025e3acda678999ed..69950ac44bba6d9d9624f551bb2777db860e881e 100644 (file)
@@ -63,7 +63,7 @@ st_read_stencil_pixels(GLcontext *ctx, GLint x, GLint y,
                        GLvoid *pixels)
 {
    struct gl_framebuffer *fb = ctx->ReadBuffer;
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_renderbuffer *strb = st_renderbuffer(fb->_StencilBuffer);
    struct pipe_transfer *pt;
    ubyte *stmap;
@@ -220,7 +220,7 @@ st_fast_readpixels(GLcontext *ctx, struct st_renderbuffer *strb,
    /*printf("st_fast_readpixels combo %d\n", (GLint) combo);*/
 
    {
-      struct pipe_context *pipe = ctx->st->pipe;
+      struct pipe_context *pipe = st_context(ctx)->pipe;
       struct pipe_transfer *trans;
       const GLubyte *map;
       GLubyte *dst;
@@ -322,7 +322,8 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
               const struct gl_pixelstore_attrib *pack,
               GLvoid *dest)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    GLfloat temp[MAX_WIDTH][4];
    const GLbitfield transferOps = ctx->_ImageTransferState;
    GLsizei i, j;
@@ -337,7 +338,7 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
    /* XXX convolution not done yet */
    assert((transferOps & IMAGE_CONVOLUTION_BIT) == 0);
 
-   st_validate_state(ctx->st);
+   st_validate_state(st);
 
    /* Do all needed clipping here, so that we can forget about it later */
    if (!_mesa_clip_readpixels(ctx, &x, &y, &width, &height, &clippedPacking)) {
@@ -349,7 +350,7 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
    if (!dest)
       return;
 
-   st_flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
+   st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL);
 
    if (format == GL_STENCIL_INDEX ||
        format == GL_DEPTH_STENCIL) {
index ed113b5dbc3a69b0c5d26ee4ad30ea38f9eaf70a..7e2e533881d35658862cb689759dbc02c012d1bf 100644 (file)
@@ -120,17 +120,18 @@ static void
 st_DeleteTextureObject(GLcontext *ctx,
                        struct gl_texture_object *texObj)
 {
+   struct st_context *st = st_context(ctx);
    struct st_texture_object *stObj = st_texture_object(texObj);
    if (stObj->pt)
       pipe_resource_reference(&stObj->pt, NULL);
    if (stObj->sampler_view) {
-      if (stObj->sampler_view->context != ctx->st->pipe) {
+      if (stObj->sampler_view->context != st->pipe) {
          /* Take "ownership" of this texture sampler view by setting
           * its context pointer to this context.  This avoids potential
           * crashes when the texture object is shared among contexts
           * and the original/owner context has already been destroyed.
           */
-         stObj->sampler_view->context = ctx->st->pipe;
+         stObj->sampler_view->context = st->pipe;
       }
       pipe_sampler_view_reference(&stObj->sampler_view, NULL);
    }
@@ -208,84 +209,108 @@ do_memcpy(void *dest, const void *src, size_t n)
 
 
 /**
- * Return default texture usage bitmask for the given texture format.
+ * Return default texture resource binding bitmask for the given format.
  */
 static GLuint
-default_usage(enum pipe_format fmt)
+default_bindings(struct st_context *st, enum pipe_format format)
 {
-   GLuint usage = PIPE_BIND_SAMPLER_VIEW;
-   if (util_format_is_depth_or_stencil(fmt))
-      usage |= PIPE_BIND_DEPTH_STENCIL;
+   struct pipe_screen *screen = st->pipe->screen;
+   const unsigned target = PIPE_TEXTURE_2D;
+   const unsigned geom = 0x0;
+   unsigned bindings;
+
+   if (util_format_is_depth_or_stencil(format))
+      bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_DEPTH_STENCIL;
+   else
+      bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET;
+
+   if (screen->is_format_supported(screen, format, target, bindings, geom))
+      return bindings;
    else
-      usage |= PIPE_BIND_RENDER_TARGET;
-   return usage;
+      return PIPE_BIND_SAMPLER_VIEW;
+}
+
+
+/** 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.
+ * Try to allocate a pipe_resource object for the given st_texture_object.
  *
- * [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.
+ * We use the given st_texture_image as a clue to determine the size of the
+ * mipmap image at level=0.
  *
- * Otherwise, create texture with space for images from (level 0)..(1x1).
- * Consider pruning this texture at a validation if the saving is worth it.
  */
 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, usage;
+   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
@@ -297,21 +322,26 @@ guess_and_alloc_texture(struct st_context *st,
         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);
 
-   usage = default_usage(fmt);
+   bindings = default_bindings(st, fmt);
 
    stObj->pt = st_texture_create(st,
                                  gl_target_to_pipe(stObj->base.Target),
@@ -320,7 +350,7 @@ guess_and_alloc_texture(struct st_context *st,
                                  width,
                                  height,
                                  depth,
-                                 usage);
+                                 bindings);
 
    DBG("%s - success\n", __FUNCTION__);
 }
@@ -381,7 +411,8 @@ compress_with_blit(GLcontext * ctx,
 {
    const GLuint dstImageOffsets[1] = {0};
    struct st_texture_image *stImage = st_texture_image(texImage);
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    struct pipe_screen *screen = pipe->screen;
    gl_format mesa_format;
    struct pipe_resource templ;
@@ -458,7 +489,7 @@ compress_with_blit(GLcontext * ctx,
 
 
    /* copy / compress image */
-   util_blit_pixels_tex(ctx->st->blit,
+   util_blit_pixels_tex(st->blit,
                         src_view,         /* sampler view (src) */
                         0, 0,             /* src x0, y0 */
                         width, height,    /* src x1, y1 */
@@ -493,7 +524,8 @@ st_TexImage(GLcontext * ctx,
             struct gl_texture_image *texImage,
             GLsizei imageSize, GLboolean compressed_src)
 {
-   struct pipe_screen *screen = ctx->st->pipe->screen;
+   struct st_context *st = st_context(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;
@@ -570,15 +602,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;
       }
    }
 
@@ -588,13 +618,13 @@ st_TexImage(GLcontext * ctx,
    }
 
    if (!stObj->pt) {
-      guess_and_alloc_texture(ctx->st, stObj, stImage);
+      guess_and_alloc_texture(st, stObj, stImage);
       if (!stObj->pt) {
          /* Probably out of memory.
           * Try flushing any pending rendering, then retry.
           */
-         st_finish(ctx->st);
-         guess_and_alloc_texture(ctx->st, stObj, stImage);
+         st_finish(st);
+         guess_and_alloc_texture(st, stObj, stImage);
          if (!stObj->pt) {
             _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
             return;
@@ -659,7 +689,7 @@ st_TexImage(GLcontext * ctx,
       else
          transfer_usage = PIPE_TRANSFER_WRITE;
 
-      texImage->Data = st_texture_image_map(ctx->st, stImage, 0,
+      texImage->Data = st_texture_image_map(st, stImage, 0,
                                             transfer_usage, 0, 0,
                                             stImage->base.Width,
                                             stImage->base.Height);
@@ -740,9 +770,9 @@ st_TexImage(GLcontext * ctx,
 
         if (stImage->pt && i + 1 < depth) {
             /* unmap this slice */
-           st_texture_image_unmap(ctx->st, stImage);
+           st_texture_image_unmap(st, stImage);
             /* map next slice of 3D texture */
-           texImage->Data = st_texture_image_map(ctx->st, stImage, i + 1,
+           texImage->Data = st_texture_image_map(st, stImage, i + 1,
                                                   transfer_usage, 0, 0,
                                                   stImage->base.Width,
                                                   stImage->base.Height);
@@ -755,7 +785,7 @@ done:
    _mesa_unmap_teximage_pbo(ctx, unpack);
 
    if (stImage->pt && texImage->Data) {
-      st_texture_image_unmap(ctx->st, stImage);
+      st_texture_image_unmap(st, stImage);
       texImage->Data = NULL;
    }
 }
@@ -832,7 +862,8 @@ decompress_with_blit(GLcontext * ctx, GLenum target, GLint level,
                      struct gl_texture_object *texObj,
                      struct gl_texture_image *texImage)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    struct pipe_screen *screen = pipe->screen;
    struct st_texture_image *stImage = st_texture_image(texImage);
    struct st_texture_object *stObj = st_texture_object(texObj);
@@ -856,7 +887,7 @@ decompress_with_blit(GLcontext * ctx, GLenum target, GLint level,
    }
 
    /* blit/render/decompress */
-   util_blit_pixels_tex(ctx->st->blit,
+   util_blit_pixels_tex(st->blit,
                         src_view,      /* pipe_resource (src) */
                         0, 0,             /* src x0, y0 */
                         width, height,    /* src x1, y1 */
@@ -928,6 +959,7 @@ st_get_tex_image(GLcontext * ctx, GLenum target, GLint level,
                  struct gl_texture_object *texObj,
                  struct gl_texture_image *texImage, GLboolean compressed_dst)
 {
+   struct st_context *st = st_context(ctx);
    struct st_texture_image *stImage = st_texture_image(texImage);
    const GLuint dstImageStride =
       _mesa_image_image_stride(&ctx->Pack, texImage->Width, texImage->Height,
@@ -954,14 +986,17 @@ st_get_tex_image(GLcontext * ctx, GLenum target, GLint level,
        */
       unsigned face = _mesa_tex_target_to_face(target);
 
-      st_teximage_flush_before_map(ctx->st, stImage->pt, face, level,
+      st_teximage_flush_before_map(st, stImage->pt, face, level,
                                   PIPE_TRANSFER_READ);
 
-      texImage->Data = st_texture_image_map(ctx->st, stImage, 0,
+      texImage->Data = st_texture_image_map(st, stImage, 0,
                                             PIPE_TRANSFER_READ, 0, 0,
                                             stImage->base.Width,
                                             stImage->base.Height);
-      texImage->RowStride = stImage->transfer->stride / util_format_get_blocksize(stImage->pt->format);
+      /* compute stride in texels from stride in bytes */
+      texImage->RowStride = stImage->transfer->stride
+         * util_format_get_blockwidth(stImage->pt->format)
+         / util_format_get_blocksize(stImage->pt->format);
    }
    else {
       /* Otherwise, the image should actually be stored in
@@ -992,9 +1027,9 @@ st_get_tex_image(GLcontext * ctx, GLenum target, GLint level,
 
       if (stImage->pt && i + 1 < depth) {
          /* unmap this slice */
-        st_texture_image_unmap(ctx->st, stImage);
+        st_texture_image_unmap(st, stImage);
          /* map next slice of 3D texture */
-        texImage->Data = st_texture_image_map(ctx->st, stImage, i + 1,
+        texImage->Data = st_texture_image_map(st, stImage, i + 1,
                                                PIPE_TRANSFER_READ, 0, 0,
                                                stImage->base.Width,
                                                stImage->base.Height);
@@ -1006,7 +1041,7 @@ st_get_tex_image(GLcontext * ctx, GLenum target, GLint level,
 
    /* Unmap */
    if (stImage->pt) {
-      st_texture_image_unmap(ctx->st, stImage);
+      st_texture_image_unmap(st, stImage);
       texImage->Data = NULL;
    }
 }
@@ -1044,7 +1079,8 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
                struct gl_texture_object *texObj,
                struct gl_texture_image *texImage)
 {
-   struct pipe_screen *screen = ctx->st->pipe->screen;
+   struct st_context *st = st_context(ctx);
+   struct pipe_screen *screen = st->pipe->screen;
    struct st_texture_image *stImage = st_texture_image(texImage);
    GLuint dstRowStride;
    const GLuint srcImageStride =
@@ -1092,9 +1128,9 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
       else
          transfer_usage = PIPE_TRANSFER_WRITE;
 
-      st_teximage_flush_before_map(ctx->st, stImage->pt, face, level,
+      st_teximage_flush_before_map(st, stImage->pt, face, level,
                                   transfer_usage);
-      texImage->Data = st_texture_image_map(ctx->st, stImage, zoffset, 
+      texImage->Data = st_texture_image_map(st, stImage, zoffset, 
                                             transfer_usage,
                                             xoffset, yoffset,
                                             width, height);
@@ -1122,9 +1158,9 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
 
       if (stImage->pt && i + 1 < depth) {
          /* unmap this slice */
-        st_texture_image_unmap(ctx->st, stImage);
+        st_texture_image_unmap(st, stImage);
          /* map next slice of 3D texture */
-        texImage->Data = st_texture_image_map(ctx->st, stImage,
+        texImage->Data = st_texture_image_map(st, stImage,
                                                zoffset + i + 1,
                                                transfer_usage,
                                                xoffset, yoffset,
@@ -1137,7 +1173,7 @@ done:
    _mesa_unmap_teximage_pbo(ctx, packing);
 
    if (stImage->pt && texImage->Data) {
-      st_texture_image_unmap(ctx->st, stImage);
+      st_texture_image_unmap(st, stImage);
       texImage->Data = NULL;
    }
 }
@@ -1208,6 +1244,7 @@ st_CompressedTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
                            struct gl_texture_object *texObj,
                            struct gl_texture_image *texImage)
 {
+   struct st_context *st = st_context(ctx);
    struct st_texture_image *stImage = st_texture_image(texImage);
    int srcBlockStride;
    int dstBlockStride;
@@ -1218,9 +1255,9 @@ st_CompressedTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
       unsigned face = _mesa_tex_target_to_face(target);
       pformat = stImage->pt->format;
 
-      st_teximage_flush_before_map(ctx->st, stImage->pt, face, level,
+      st_teximage_flush_before_map(st, stImage->pt, face, level,
                                   PIPE_TRANSFER_WRITE);
-      texImage->Data = st_texture_image_map(ctx->st, stImage, 0, 
+      texImage->Data = st_texture_image_map(st, stImage, 0, 
                                             PIPE_TRANSFER_WRITE,
                                             xoffset, yoffset,
                                             width, height);
@@ -1252,7 +1289,7 @@ st_CompressedTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
    }
 
    if (stImage->pt) {
-      st_texture_image_unmap(ctx->st, stImage);
+      st_texture_image_unmap(st, stImage);
       texImage->Data = NULL;
    }
 }
@@ -1288,7 +1325,8 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
                           GLint srcX, GLint srcY,
                           GLsizei width, GLsizei height)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    struct pipe_transfer *src_trans;
    GLvoid *texDest;
    enum pipe_transfer_usage transfer_usage;
@@ -1316,10 +1354,10 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
    else
       transfer_usage = PIPE_TRANSFER_WRITE;
 
-   st_teximage_flush_before_map(ctx->st, stImage->pt, 0, 0,
+   st_teximage_flush_before_map(st, stImage->pt, 0, 0,
                                transfer_usage);
 
-   texDest = st_texture_image_map(ctx->st, stImage, 0, transfer_usage,
+   texDest = st_texture_image_map(st, stImage, 0, transfer_usage,
                                   destX, destY, width, height);
 
    if (baseFormat == GL_DEPTH_COMPONENT ||
@@ -1394,7 +1432,7 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
          free(tempSrc);
    }
 
-   st_texture_image_unmap(ctx->st, stImage);
+   st_texture_image_unmap(st, stImage);
    pipe->transfer_destroy(pipe, src_trans);
 }
 
@@ -1490,7 +1528,8 @@ st_copy_texsubimage(GLcontext *ctx,
    const GLenum texBaseFormat = texImage->_BaseFormat;
    struct gl_framebuffer *fb = ctx->ReadBuffer;
    struct st_renderbuffer *strb;
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    struct pipe_screen *screen = pipe->screen;
    enum pipe_format dest_format, src_format;
    GLboolean use_fallback = GL_TRUE;
@@ -1500,11 +1539,11 @@ st_copy_texsubimage(GLcontext *ctx,
    GLboolean do_flip = (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP);
 
    /* any rendering in progress must flushed before we grab the fb image */
-   st_flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
+   st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL);
 
    /* make sure finalize_textures has been called? 
     */
-   if (0) st_validate_state(ctx->st);
+   if (0) st_validate_state(st);
 
    /* determine if copying depth or color data */
    if (texBaseFormat == GL_DEPTH_COMPONENT ||
@@ -1621,7 +1660,7 @@ st_copy_texsubimage(GLcontext *ctx,
             srcY0 = srcY;
             srcY1 = srcY0 + height;
          }
-         util_blit_pixels_writemask(ctx->st->blit,
+         util_blit_pixels_writemask(st->blit,
                                     strb->surface,
                                     st_get_renderbuffer_sampler_view(strb, pipe),
                                     srcX, srcY0,
@@ -1737,12 +1776,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:
        */
@@ -1788,10 +1841,12 @@ st_finalize_texture(GLcontext *ctx,
                    struct gl_texture_object *tObj,
                    GLboolean *needFlush)
 {
+   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;
+   enum pipe_format firstImageFormat;
 
    *needFlush = GL_FALSE;
 
@@ -1806,10 +1861,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
@@ -1823,43 +1879,42 @@ 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->last_level < stObj->lastLevel ||
-          stObj->pt->width0 != firstImage->base.Width2 ||
-          stObj->pt->height0 != firstImage->base.Height2 ||
-          stObj->pt->depth0 != firstImage->base.Depth2)
+          stObj->pt->format != firstImageFormat ||
+          stObj->pt->last_level != stObj->lastLevel ||
+          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);
-         ctx->st->dirty.st |= ST_NEW_FRAMEBUFFER;
+         st->dirty.st |= ST_NEW_FRAMEBUFFER;
       }
    }
 
    /* 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 usage = default_usage(fmt);
+      GLuint bindings = default_bindings(st, firstImageFormat);
 
-      stObj->pt = st_texture_create(ctx->st,
+      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,
-                                    usage);
+                                    stObj->width0,
+                                    stObj->height0,
+                                    stObj->depth0,
+                                    bindings);
 
       if (!stObj->pt) {
          _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
@@ -1873,12 +1928,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(ctx->st, stObj, level, stImage);
+            copy_image_data_to_texture(st, stObj, level, stImage);
            *needFlush = GL_TRUE;
          }
       }
index dfee490b54a8f82ed13b7322d886f40e2b2dc63e..3637f6e75f01af73c53d267746b9491477abda58 100644 (file)
@@ -201,7 +201,6 @@ struct st_framebuffer
 {
    GLframebuffer Base;
    void *Private;
-   GLuint InitWidth, InitHeight;
 
    struct st_framebuffer_iface *iface;
    enum st_attachment_type statts[ST_ATTACHMENT_COUNT];
index 5dbabfa5c2feac2a0c160c1f020eb2e8fa3cd7e8..2da27fc4bd10d204b364ddd00411fd2317d157ce 100644 (file)
@@ -47,6 +47,7 @@ int ST_DEBUG = 0;
 static const struct debug_named_value st_debug_flags[] = {
    { "mesa",     DEBUG_MESA },
    { "tgsi",     DEBUG_TGSI },
+   { "constants",DEBUG_CONSTANTS },
    { "pipe",     DEBUG_PIPE },
    { "tex",      DEBUG_TEX },
    { "fallback", DEBUG_FALLBACK },
@@ -75,7 +76,7 @@ void
 st_print_current(void)
 {
    GET_CURRENT_CONTEXT(ctx);
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
 
 #if 0
    int i;
index a3620359dbffd7df9a74b20bca5d5d6ed0d58d33..4137596bd404eb209fd8e0067cf7ff7a6bdd944c 100644 (file)
@@ -347,7 +347,8 @@ setup_interleaved_attribs(GLcontext *ctx,
                           struct pipe_vertex_buffer *vbuffer,
                           struct pipe_vertex_element velements[])
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    GLuint attr;
    const GLubyte *offset0 = NULL;
 
@@ -412,7 +413,8 @@ setup_non_interleaved_attribs(GLcontext *ctx,
                               struct pipe_vertex_buffer vbuffer[],
                               struct pipe_vertex_element velements[])
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    GLuint attr;
 
    for (attr = 0; attr < vpv->num_inputs; attr++) {
@@ -543,7 +545,8 @@ st_draw_vbo(GLcontext *ctx,
             GLuint min_index,
             GLuint max_index)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
    const struct st_vertex_program *vp;
    const struct st_vp_varient *vpv;
    struct pipe_vertex_buffer vbuffer[PIPE_MAX_SHADER_INPUTS];
@@ -566,16 +569,16 @@ st_draw_vbo(GLcontext *ctx,
 
    vertDataEdgeFlags = arrays[VERT_ATTRIB_EDGEFLAG]->BufferObj &&
                        arrays[VERT_ATTRIB_EDGEFLAG]->BufferObj->Name;
-   if (vertDataEdgeFlags != ctx->st->vertdata_edgeflags) {
-      ctx->st->vertdata_edgeflags = vertDataEdgeFlags;
-      ctx->st->dirty.st |= ST_NEW_EDGEFLAGS_DATA;
+   if (vertDataEdgeFlags != st->vertdata_edgeflags) {
+      st->vertdata_edgeflags = vertDataEdgeFlags;
+      st->dirty.st |= ST_NEW_EDGEFLAGS_DATA;
    }
 
-   st_validate_state(ctx->st);
+   st_validate_state(st);
 
    /* must get these after state validation! */
-   vp = ctx->st->vp;
-   vpv = ctx->st->vp_varient;
+   vp = st->vp;
+   vpv = st->vp_varient;
 
 #if 0
    if (MESA_VERBOSE & VERBOSE_GLSL) {
@@ -624,7 +627,7 @@ st_draw_vbo(GLcontext *ctx,
 #endif
 
    pipe->set_vertex_buffers(pipe, num_vbuffers, vbuffer);
-   cso_set_vertex_elements(ctx->st->cso_context, num_velements, velements);
+   cso_set_vertex_elements(st->cso_context, num_velements, velements);
 
    if (num_vbuffers == 0 || num_velements == 0)
       return;
index 0889f1a522de389fc784bce0443f24ac5f66fa15..a1f70e869362a8f70714f58848722fefd66f98af 100644 (file)
@@ -55,7 +55,7 @@ static void
 set_feedback_vertex_format(GLcontext *ctx)
 {
 #if 0
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct vertex_info vinfo;
    GLuint i;
 
@@ -99,7 +99,7 @@ st_feedback_draw_vbo(GLcontext *ctx,
                      GLuint min_index,
                      GLuint max_index)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct pipe_context *pipe = st->pipe;
    struct draw_context *draw = st->draw;
    const struct st_vertex_program *vp;
@@ -115,13 +115,13 @@ st_feedback_draw_vbo(GLcontext *ctx,
 
    assert(draw);
 
-   st_validate_state(ctx->st);
+   st_validate_state(st);
 
    if (!index_bounds_valid)
       vbo_get_minmax_index(ctx, prims, ib, &min_index, &max_index);
 
    /* must get these after state validation! */
-   vp = ctx->st->vp;
+   vp = st->vp;
    vs = &st->vp_varient->tgsi;
 
    if (!st->vp_varient->draw_shader) {
index 8a366d834e7e552c385b88f2fec01359b8f7cf51..d7d2be6d45496e79bd8138d88193df35a1333fc6 100644 (file)
@@ -36,6 +36,7 @@
 #include "main/context.h"
 #include "main/texstore.h"
 #include "main/enums.h"
+#include "main/image.h"
 #include "main/macros.h"
 
 #include "pipe/p_context.h"
@@ -160,6 +161,10 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat)
       return PIPE_FORMAT_S8_USCALED_Z24_UNORM;
    case MESA_FORMAT_S8_Z24:
       return PIPE_FORMAT_Z24_UNORM_S8_USCALED;
+   case MESA_FORMAT_Z24_X8:
+      return PIPE_FORMAT_X8Z24_UNORM;
+   case MESA_FORMAT_X8_Z24:
+      return PIPE_FORMAT_Z24X8_UNORM;
    case MESA_FORMAT_YCBCR:
       return PIPE_FORMAT_UYVY;
 #if FEATURE_texture_s3tc
@@ -298,6 +303,28 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
 }
 
 
+/**
+ * Return first supported format from the given list.
+ */
+static enum pipe_format
+find_supported_format(struct pipe_screen *screen, 
+                      const enum pipe_format formats[],
+                      uint num_formats,
+                      enum pipe_texture_target target,
+                      unsigned tex_usage, 
+                      unsigned geom_flags)
+{
+   uint i;
+   for (i = 0; i < num_formats; i++) {
+      if (screen->is_format_supported(screen, formats[i], target,
+                                      tex_usage, geom_flags)) {
+         return formats[i];
+      }
+   }
+   return PIPE_FORMAT_NONE;
+}
+
+
 /**
  * Find an RGBA format supported by the context/winsys.
  */
@@ -313,15 +340,11 @@ default_rgba_format(struct pipe_screen *screen,
       PIPE_FORMAT_A8B8G8R8_UNORM,
       PIPE_FORMAT_B5G6R5_UNORM
    };
-   uint i;
-   for (i = 0; i < Elements(colorFormats); i++) {
-      if (screen->is_format_supported( screen, colorFormats[i], target, tex_usage, geom_flags )) {
-         return colorFormats[i];
-      }
-   }
-   return PIPE_FORMAT_NONE;
+   return find_supported_format(screen, colorFormats, Elements(colorFormats),
+                                target, tex_usage, geom_flags);
 }
 
+
 /**
  * Find an RGB format supported by the context/winsys.
  */
@@ -340,13 +363,8 @@ default_rgb_format(struct pipe_screen *screen,
       PIPE_FORMAT_A8B8G8R8_UNORM,
       PIPE_FORMAT_B5G6R5_UNORM
    };
-   uint i;
-   for (i = 0; i < Elements(colorFormats); i++) {
-      if (screen->is_format_supported( screen, colorFormats[i], target, tex_usage, geom_flags )) {
-         return colorFormats[i];
-      }
-   }
-   return PIPE_FORMAT_NONE;
+   return find_supported_format(screen, colorFormats, Elements(colorFormats),
+                                target, tex_usage, geom_flags);
 }
 
 /**
@@ -363,115 +381,72 @@ default_srgba_format(struct pipe_screen *screen,
       PIPE_FORMAT_A8R8G8B8_SRGB,
       PIPE_FORMAT_A8B8G8R8_SRGB,
    };
-   uint i;
-   for (i = 0; i < Elements(colorFormats); i++) {
-      if (screen->is_format_supported( screen, colorFormats[i], target, tex_usage, geom_flags )) {
-         return colorFormats[i];
-      }
-   }
-   return PIPE_FORMAT_NONE;
-}
-
-/**
- * Search list of formats for first RGBA format with >8 bits/channel.
- */
-static enum pipe_format
-default_deep_rgba_format(struct pipe_screen *screen, 
-                         enum pipe_texture_target target,
-                         unsigned tex_usage, 
-                         unsigned geom_flags)
-{
-   if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SNORM, target, tex_usage, geom_flags)) {
-      return PIPE_FORMAT_R16G16B16A16_SNORM;
-   }
-   if (tex_usage & PIPE_BIND_RENDER_TARGET)
-      return default_rgba_format(screen, target, tex_usage, geom_flags);
-   else
-      return PIPE_FORMAT_NONE;
-}
-
-
-/**
- * Find an Z format supported by the context/winsys.
- */
-static enum pipe_format
-default_depth_format(struct pipe_screen *screen, 
-                     enum pipe_texture_target target,
-                     unsigned tex_usage, 
-                     unsigned geom_flags)
-{
-   static const enum pipe_format zFormats[] = {
-      PIPE_FORMAT_Z16_UNORM,
-      PIPE_FORMAT_Z32_UNORM,
-      PIPE_FORMAT_Z24_UNORM_S8_USCALED,
-      PIPE_FORMAT_S8_USCALED_Z24_UNORM
-   };
-   uint i;
-   for (i = 0; i < Elements(zFormats); i++) {
-      if (screen->is_format_supported( screen, zFormats[i], target, tex_usage, geom_flags )) {
-         return zFormats[i];
-      }
-   }
-   return PIPE_FORMAT_NONE;
+   return find_supported_format(screen, colorFormats, Elements(colorFormats),
+                                target, tex_usage, geom_flags);
 }
 
 
 /**
  * Given an OpenGL internalFormat value for a texture or surface, return
  * the best matching PIPE_FORMAT_x, or PIPE_FORMAT_NONE if there's no match.
+ * This is called during glTexImage2D, for example.
+ *
+ * The bindings parameter typically has PIPE_BIND_SAMPLER_VIEW set, plus
+ * either PIPE_BINDING_RENDER_TARGET or PIPE_BINDING_DEPTH_STENCIL if
+ * we want render-to-texture ability.
+ *
+ * \param internalFormat  the user value passed to glTexImage2D
  * \param target  one of PIPE_TEXTURE_x
- * \param tex_usage  either PIPE_BIND_RENDER_TARGET
- *                   or PIPE_BIND_SAMPLER_VIEW
+ * \param bindings  bitmask of PIPE_BIND_x flags.
  */
 enum pipe_format
 st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
-                 enum pipe_texture_target target, unsigned tex_usage)
+                 enum pipe_texture_target target, unsigned bindings)
 {
-   unsigned geom_flags = 0;
+   unsigned geom_flags = 0; /* we don't care about POT vs. NPOT here, yet */
 
    switch (internalFormat) {
    case 4:
    case GL_RGBA:
-   case GL_COMPRESSED_RGBA:
    case GL_RGBA8:
    case GL_RGB10_A2:
    case GL_RGBA12:
-      return default_rgba_format( screen, target, tex_usage, geom_flags );
+      return default_rgba_format( screen, target, bindings, geom_flags );
    case 3:
    case GL_RGB:
-   case GL_COMPRESSED_RGB:
-      return default_rgb_format( screen, target, tex_usage, geom_flags );
+      return default_rgb_format( screen, target, bindings, geom_flags );
    case GL_RGBA16:
-      if (tex_usage & PIPE_BIND_RENDER_TARGET)
-         return default_deep_rgba_format( screen, target, tex_usage, geom_flags );
-      else
-         return default_rgba_format( screen, target, tex_usage, geom_flags );
+      return default_rgba_format( screen, target, bindings, geom_flags );
 
    case GL_RGBA4:
    case GL_RGBA2:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_B4G4R4A4_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported( screen, PIPE_FORMAT_B4G4R4A4_UNORM,
+                                       target, bindings, geom_flags ))
          return PIPE_FORMAT_B4G4R4A4_UNORM;
-      return default_rgba_format( screen, target, tex_usage, geom_flags );
+      return default_rgba_format( screen, target, bindings, geom_flags );
 
    case GL_RGB5_A1:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM,
+                                       target, bindings, geom_flags ))
          return PIPE_FORMAT_B5G5R5A1_UNORM;
-      return default_rgba_format( screen, target, tex_usage, geom_flags );
+      return default_rgba_format( screen, target, bindings, geom_flags );
 
    case GL_RGB8:
    case GL_RGB10:
    case GL_RGB12:
    case GL_RGB16:
-      return default_rgb_format( screen, target, tex_usage, geom_flags );
+      return default_rgb_format( screen, target, bindings, geom_flags );
 
    case GL_RGB5:
    case GL_RGB4:
    case GL_R3_G3_B2:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_B5G6R5_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported( screen, PIPE_FORMAT_B5G6R5_UNORM,
+                                       target, bindings, geom_flags ))
          return PIPE_FORMAT_B5G6R5_UNORM;
-      if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM,
+                                       target, bindings, geom_flags ))
          return PIPE_FORMAT_B5G5R5A1_UNORM;
-      return default_rgba_format( screen, target, tex_usage, geom_flags );
+      return default_rgba_format( screen, target, bindings, geom_flags );
 
    case GL_ALPHA:
    case GL_ALPHA4:
@@ -479,9 +454,10 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
    case GL_ALPHA12:
    case GL_ALPHA16:
    case GL_COMPRESSED_ALPHA:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_A8_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported( screen, PIPE_FORMAT_A8_UNORM, target,
+                                       bindings, geom_flags ))
          return PIPE_FORMAT_A8_UNORM;
-      return default_rgba_format( screen, target, tex_usage, geom_flags );
+      return default_rgba_format( screen, target, bindings, geom_flags );
 
    case 1:
    case GL_LUMINANCE:
@@ -490,9 +466,10 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
    case GL_LUMINANCE12:
    case GL_LUMINANCE16:
    case GL_COMPRESSED_LUMINANCE:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_L8_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported( screen, PIPE_FORMAT_L8_UNORM, target,
+                                       bindings, geom_flags ))
          return PIPE_FORMAT_L8_UNORM;
-      return default_rgba_format( screen, target, tex_usage, geom_flags );
+      return default_rgba_format( screen, target, bindings, geom_flags );
 
    case 2:
    case GL_LUMINANCE_ALPHA:
@@ -503,9 +480,10 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
    case GL_LUMINANCE12_ALPHA12:
    case GL_LUMINANCE16_ALPHA16:
    case GL_COMPRESSED_LUMINANCE_ALPHA:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_UNORM, target,
+                                       bindings, geom_flags ))
          return PIPE_FORMAT_L8A8_UNORM;
-      return default_rgba_format( screen, target, tex_usage, geom_flags );
+      return default_rgba_format( screen, target, bindings, geom_flags );
 
    case GL_INTENSITY:
    case GL_INTENSITY4:
@@ -513,36 +491,73 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
    case GL_INTENSITY12:
    case GL_INTENSITY16:
    case GL_COMPRESSED_INTENSITY:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_I8_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported( screen, PIPE_FORMAT_I8_UNORM, target,
+                                       bindings, geom_flags ))
          return PIPE_FORMAT_I8_UNORM;
-      return default_rgba_format( screen, target, tex_usage, geom_flags );
+      return default_rgba_format( screen, target, bindings, geom_flags );
 
    case GL_YCBCR_MESA:
       if (screen->is_format_supported(screen, PIPE_FORMAT_UYVY,
-                                      target, tex_usage, geom_flags)) {
+                                      target, bindings, geom_flags)) {
          return PIPE_FORMAT_UYVY;
       }
       if (screen->is_format_supported(screen, PIPE_FORMAT_YUYV,
-                                      target, tex_usage, geom_flags)) {
+                                      target, bindings, geom_flags)) {
          return PIPE_FORMAT_YUYV;
       }
       return PIPE_FORMAT_NONE;
 
+   case GL_COMPRESSED_RGB:
+      /* can only sample from compressed formats */
+      if (bindings & ~PIPE_BIND_SAMPLER_VIEW)
+         return PIPE_FORMAT_NONE;
+      else if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGB,
+                                           target, bindings, geom_flags))
+         return PIPE_FORMAT_DXT1_RGB;
+      else
+         return default_rgb_format(screen, target, bindings, geom_flags);
+
+   case GL_COMPRESSED_RGBA:
+      /* can only sample from compressed formats */
+      if (bindings & ~PIPE_BIND_SAMPLER_VIEW)
+         return PIPE_FORMAT_NONE;
+      else if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_RGBA,
+                                           target, bindings, geom_flags))
+         return PIPE_FORMAT_DXT3_RGBA;
+      else
+         return default_rgba_format(screen, target, bindings, geom_flags);
+
    case GL_RGB_S3TC:
    case GL_RGB4_S3TC:
    case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
-      return PIPE_FORMAT_DXT1_RGB;
+      if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGB,
+                                      target, bindings, geom_flags))
+         return PIPE_FORMAT_DXT1_RGB;
+      else
+         return PIPE_FORMAT_NONE;
 
    case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-      return PIPE_FORMAT_DXT1_RGBA;
+      if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGBA,
+                                      target, bindings, geom_flags))
+         return PIPE_FORMAT_DXT1_RGBA;
+      else
+         return PIPE_FORMAT_NONE;
 
    case GL_RGBA_S3TC:
    case GL_RGBA4_S3TC:
    case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
-      return PIPE_FORMAT_DXT3_RGBA;
+      if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_RGBA,
+                                      target, bindings, geom_flags))
+         return PIPE_FORMAT_DXT3_RGBA;
+      else
+         return PIPE_FORMAT_NONE;
 
    case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
-      return PIPE_FORMAT_DXT5_RGBA;
+      if (screen->is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA,
+                                      target, bindings, geom_flags))
+         return PIPE_FORMAT_DXT5_RGBA;
+      else
+         return PIPE_FORMAT_NONE;
 
 #if 0
    case GL_COMPRESSED_RGB_FXT1_3DFX:
@@ -552,42 +567,60 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
 #endif
 
    case GL_DEPTH_COMPONENT16:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_Z16_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported(screen, PIPE_FORMAT_Z16_UNORM, target,
+                                      bindings, geom_flags))
          return PIPE_FORMAT_Z16_UNORM;
       /* fall-through */
    case GL_DEPTH_COMPONENT24:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported(screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED,
+                                      target, bindings, geom_flags))
          return PIPE_FORMAT_Z24_UNORM_S8_USCALED;
-      if (screen->is_format_supported( screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported(screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM,
+                                      target, bindings, geom_flags))
          return PIPE_FORMAT_S8_USCALED_Z24_UNORM;
       /* fall-through */
    case GL_DEPTH_COMPONENT32:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_Z32_UNORM, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported(screen, PIPE_FORMAT_Z32_UNORM,
+                                      target, bindings, geom_flags))
          return PIPE_FORMAT_Z32_UNORM;
       /* fall-through */
    case GL_DEPTH_COMPONENT:
-      return default_depth_format( screen, target, tex_usage, geom_flags );
+      {
+         static const enum pipe_format formats[] = {
+            PIPE_FORMAT_Z16_UNORM,
+            PIPE_FORMAT_Z32_UNORM,
+            PIPE_FORMAT_Z24_UNORM_S8_USCALED,
+            PIPE_FORMAT_S8_USCALED_Z24_UNORM
+         };
+         return find_supported_format(screen, formats, Elements(formats),
+                                      target, bindings, geom_flags);
+      }
 
    case GL_STENCIL_INDEX:
    case GL_STENCIL_INDEX1_EXT:
    case GL_STENCIL_INDEX4_EXT:
    case GL_STENCIL_INDEX8_EXT:
    case GL_STENCIL_INDEX16_EXT:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_S8_USCALED, target, tex_usage, geom_flags ))
-         return PIPE_FORMAT_S8_USCALED;
-      if (screen->is_format_supported( screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, target, tex_usage, geom_flags ))
-         return PIPE_FORMAT_Z24_UNORM_S8_USCALED;
-      if (screen->is_format_supported( screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM, target, tex_usage, geom_flags ))
-         return PIPE_FORMAT_S8_USCALED_Z24_UNORM;
-      return PIPE_FORMAT_NONE;
+      {
+         static const enum pipe_format formats[] = {
+            PIPE_FORMAT_S8_USCALED,
+            PIPE_FORMAT_Z24_UNORM_S8_USCALED,
+            PIPE_FORMAT_S8_USCALED_Z24_UNORM
+         };
+         return find_supported_format(screen, formats, Elements(formats),
+                                      target, bindings, geom_flags);
+      }
 
    case GL_DEPTH_STENCIL_EXT:
    case GL_DEPTH24_STENCIL8_EXT:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, target, tex_usage, geom_flags ))
-         return PIPE_FORMAT_Z24_UNORM_S8_USCALED;
-      if (screen->is_format_supported( screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM, target, tex_usage, geom_flags ))
-         return PIPE_FORMAT_S8_USCALED_Z24_UNORM;
-      return PIPE_FORMAT_NONE;
+      {
+         static const enum pipe_format formats[] = {
+            PIPE_FORMAT_Z24_UNORM_S8_USCALED,
+            PIPE_FORMAT_S8_USCALED_Z24_UNORM
+         };
+         return find_supported_format(screen, formats, Elements(formats),
+                                      target, bindings, geom_flags);
+      }
 
    case GL_SRGB_EXT:
    case GL_SRGB8_EXT:
@@ -595,7 +628,7 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
    case GL_COMPRESSED_SRGB_ALPHA_EXT:
    case GL_SRGB_ALPHA_EXT:
    case GL_SRGB8_ALPHA8_EXT:
-      return default_srgba_format( screen, target, tex_usage, geom_flags );
+      return default_srgba_format( screen, target, bindings, geom_flags );
    case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
       return PIPE_FORMAT_DXT1_SRGB;
    case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
@@ -609,15 +642,17 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
    case GL_SLUMINANCE8_ALPHA8_EXT:
    case GL_COMPRESSED_SLUMINANCE_EXT:
    case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_SRGB, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported(screen, PIPE_FORMAT_L8A8_SRGB,
+                                      target, bindings, geom_flags))
          return PIPE_FORMAT_L8A8_SRGB;
-      return default_srgba_format( screen, target, tex_usage, geom_flags );
+      return default_srgba_format( screen, target, bindings, geom_flags );
 
    case GL_SLUMINANCE_EXT:
    case GL_SLUMINANCE8_EXT:
-      if (screen->is_format_supported( screen, PIPE_FORMAT_L8_SRGB, target, tex_usage, geom_flags ))
+      if (screen->is_format_supported(screen, PIPE_FORMAT_L8_SRGB,
+                                      target, bindings, geom_flags))
          return PIPE_FORMAT_L8_SRGB;
-      return default_srgba_format( screen, target, tex_usage, geom_flags );
+      return default_srgba_format( screen, target, bindings, geom_flags );
 
    default:
       return PIPE_FORMAT_NONE;
@@ -625,27 +660,6 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
 }
 
 
-static GLboolean
-is_depth_or_stencil_format(GLenum internalFormat)
-{
-   switch (internalFormat) {
-   case GL_DEPTH_COMPONENT:
-   case GL_DEPTH_COMPONENT16:
-   case GL_DEPTH_COMPONENT24:
-   case GL_DEPTH_COMPONENT32:
-   case GL_STENCIL_INDEX:
-   case GL_STENCIL_INDEX1_EXT:
-   case GL_STENCIL_INDEX4_EXT:
-   case GL_STENCIL_INDEX8_EXT:
-   case GL_STENCIL_INDEX16_EXT:
-   case GL_DEPTH_STENCIL_EXT:
-   case GL_DEPTH24_STENCIL8_EXT:
-      return GL_TRUE;
-   default:
-      return GL_FALSE;
-   }
-}
-
 /**
  * Called by FBO code to choose a PIPE_FORMAT_ for drawing surfaces.
  */
@@ -654,7 +668,7 @@ st_choose_renderbuffer_format(struct pipe_screen *screen,
                               GLenum internalFormat)
 {
    uint usage;
-   if (is_depth_or_stencil_format(internalFormat))
+   if (_mesa_is_depth_or_stencil_format(internalFormat))
       usage = PIPE_BIND_DEPTH_STENCIL;
    else
       usage = PIPE_BIND_RENDER_TARGET;
@@ -669,15 +683,35 @@ gl_format
 st_ChooseTextureFormat(GLcontext *ctx, GLint internalFormat,
                        GLenum format, GLenum type)
 {
+   struct pipe_screen *screen = st_context(ctx)->pipe->screen;
    enum pipe_format pFormat;
+   uint bindings;
 
    (void) format;
    (void) type;
 
-   pFormat = st_choose_format(ctx->st->pipe->screen, internalFormat,
-                              PIPE_TEXTURE_2D, PIPE_BIND_SAMPLER_VIEW);
-   if (pFormat == PIPE_FORMAT_NONE)
+   /* GL textures may wind up being render targets, but we don't know
+    * that in advance.  Specify potential render target flags now.
+    */
+   if (_mesa_is_depth_format(internalFormat) ||
+       _mesa_is_depthstencil_format(internalFormat))
+      bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_DEPTH_STENCIL;
+   else 
+      bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET;
+
+   pFormat = st_choose_format(screen, internalFormat,
+                              PIPE_TEXTURE_2D, bindings);
+
+   if (pFormat == PIPE_FORMAT_NONE) {
+      /* try choosing format again, this time without render target bindings */
+      pFormat = st_choose_format(screen, internalFormat,
+                                 PIPE_TEXTURE_2D, PIPE_BIND_SAMPLER_VIEW);
+   }
+
+   if (pFormat == PIPE_FORMAT_NONE) {
+      /* no luck at all */
       return MESA_FORMAT_NONE;
+   }
 
    return st_pipe_format_to_mesa_format(pFormat);
 }
index 5b7a96203793cf850c5869891b0f4514baee4477..a015c4bb5870c51bbb3366623e49f75e95cccd88 100644 (file)
 
 
 #include "main/imports.h"
-#include "main/macros.h"
 #include "main/mipmap.h"
 #include "main/teximage.h"
 #include "main/texformat.h"
 
-#include "shader/prog_instruction.h"
-
 #include "pipe/p_context.h"
 #include "pipe/p_defines.h"
 #include "util/u_inlines.h"
 #include "util/u_format.h"
 #include "util/u_gen_mipmap.h"
-#include "util/u_math.h"
-
-#include "cso_cache/cso_cache.h"
-#include "cso_cache/cso_context.h"
 
 #include "st_debug.h"
 #include "st_context.h"
 #include "st_gen_mipmap.h"
-#include "st_texture.h"
 #include "st_cb_texture.h"
 #include "st_inlines.h"
 
@@ -102,11 +94,48 @@ st_render_mipmap(struct st_context *st,
 }
 
 
+/**
+ * Helper function to decompress an image.  The result is a 32-bpp RGBA
+ * image with stride==width.
+ */
+static void
+decompress_image(enum pipe_format format,
+                 const uint8_t *src, uint8_t *dst,
+                 unsigned width, unsigned height)
+{
+   const struct util_format_description *desc = util_format_description(format);
+   const uint dst_stride = 4 * width;
+   const uint src_stride = util_format_get_stride(format, width);
+
+   desc->unpack_rgba_8unorm(dst, dst_stride, src, src_stride, width, height);
+}
+
+
+/**
+ * Helper function to compress an image.  The source is a 32-bpp RGBA image
+ * with stride==width.
+ */
+static void
+compress_image(enum pipe_format format,
+               const uint8_t *src, uint8_t *dst,
+               unsigned width, unsigned height)
+{
+   const struct util_format_description *desc = util_format_description(format);
+   const uint dst_stride = util_format_get_stride(format, width);
+   const uint src_stride = 4 * width;
+
+   desc->pack_rgba_8unorm(dst, dst_stride, src, src_stride, width, height);
+}
+
+
+/**
+ * Software fallback for generate mipmap levels.
+ */
 static void
 fallback_generate_mipmap(GLcontext *ctx, GLenum target,
                          struct gl_texture_object *texObj)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
+   struct pipe_context *pipe = st_context(ctx)->pipe;
    struct pipe_resource *pt = st_get_texobj_resource(texObj);
    const uint baseLevel = texObj->BaseLevel;
    const uint lastLevel = pt->last_level;
@@ -114,17 +143,34 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
    uint dstLevel;
    GLenum datatype;
    GLuint comps;
+   GLboolean compressed;
    
    if (ST_DEBUG & DEBUG_FALLBACK)
       debug_printf("%s: fallback processing\n", __FUNCTION__);
 
    assert(target != GL_TEXTURE_3D); /* not done yet */
 
-   _mesa_format_to_type_and_comps(texObj->Image[face][baseLevel]->TexFormat,
-                                  &datatype, &comps);
+   compressed =
+      _mesa_is_format_compressed(texObj->Image[face][baseLevel]->TexFormat);
+
+   if (compressed) {
+      datatype = GL_UNSIGNED_BYTE;
+      comps = 4;
+   }
+   else {
+      _mesa_format_to_type_and_comps(texObj->Image[face][baseLevel]->TexFormat,
+                                     &datatype, &comps);
+      assert(comps > 0 && "bad texture format in fallback_generate_mipmap()");
+   }
 
    for (dstLevel = baseLevel + 1; dstLevel <= lastLevel; dstLevel++) {
       const uint srcLevel = dstLevel - 1;
+      const uint srcWidth = u_minify(pt->width0, srcLevel);
+      const uint srcHeight = u_minify(pt->height0, srcLevel);
+      const uint srcDepth = u_minify(pt->depth0, srcLevel);
+      const uint dstWidth = u_minify(pt->width0, dstLevel);
+      const uint dstHeight = u_minify(pt->height0, dstLevel);
+      const uint dstDepth = u_minify(pt->depth0, dstLevel);
       struct pipe_transfer *srcTrans, *dstTrans;
       const ubyte *srcData;
       ubyte *dstData;
@@ -133,14 +179,13 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
       srcTrans = st_cond_flush_get_tex_transfer(st_context(ctx), pt, face,
                                                srcLevel, zslice,
                                                PIPE_TRANSFER_READ, 0, 0,
-                                               u_minify(pt->width0, srcLevel),
-                                               u_minify(pt->height0, srcLevel));
+                                                srcWidth, srcHeight);
+                                               
 
       dstTrans = st_cond_flush_get_tex_transfer(st_context(ctx), pt, face,
                                                dstLevel, zslice,
                                                PIPE_TRANSFER_WRITE, 0, 0,
-                                               u_minify(pt->width0, dstLevel),
-                                               u_minify(pt->height0, dstLevel));
+                                               dstWidth, dstHeight);
 
       srcData = (ubyte *) pipe_transfer_map(pipe, srcTrans);
       dstData = (ubyte *) pipe_transfer_map(pipe, dstTrans);
@@ -148,18 +193,49 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
       srcStride = srcTrans->stride / util_format_get_blocksize(srcTrans->resource->format);
       dstStride = dstTrans->stride / util_format_get_blocksize(dstTrans->resource->format);
 
-      _mesa_generate_mipmap_level(target, datatype, comps,
-                                  0 /*border*/,
-                                  u_minify(pt->width0, srcLevel),
-                                  u_minify(pt->height0, srcLevel),
-                                  u_minify(pt->depth0, srcLevel),
-                                  srcData,
-                                  srcStride, /* stride in texels */
-                                  u_minify(pt->width0, dstLevel),
-                                  u_minify(pt->height0, dstLevel),
-                                  u_minify(pt->depth0, dstLevel),
-                                  dstData,
-                                  dstStride); /* stride in texels */
+      if (compressed) {
+         const enum pipe_format format = pt->format;
+         const uint bw = util_format_get_blockwidth(format);
+         const uint bh = util_format_get_blockheight(format);
+         const uint srcWidth2 = align(srcWidth, bw);
+         const uint srcHeight2 = align(srcHeight, bh);
+         const uint dstWidth2 = align(dstWidth, bw);
+         const uint dstHeight2 = align(dstHeight, bh);
+         uint8_t *srcTemp, *dstTemp;
+
+         assert(comps == 4);
+
+         srcTemp = malloc(srcWidth2 * srcHeight2 * comps + 000);
+         dstTemp = malloc(dstWidth2 * dstHeight2 * comps + 000);
+
+         /* decompress the src image: srcData -> srcTemp */
+         decompress_image(format, srcData, srcTemp, srcWidth, srcHeight);
+
+         _mesa_generate_mipmap_level(target, datatype, comps,
+                                     0 /*border*/,
+                                     srcWidth2, srcHeight2, srcDepth,
+                                     srcTemp,
+                                     srcWidth2, /* stride in texels */
+                                     dstWidth2, dstHeight2, dstDepth,
+                                     dstTemp,
+                                     dstWidth2); /* stride in texels */
+
+         /* compress the new image: dstTemp -> dstData */
+         compress_image(format, dstTemp, dstData, dstWidth2, dstHeight2);
+
+         free(srcTemp);
+         free(dstTemp);
+      }
+      else {
+         _mesa_generate_mipmap_level(target, datatype, comps,
+                                     0 /*border*/,
+                                     srcWidth, srcHeight, srcDepth,
+                                     srcData,
+                                     srcStride, /* stride in texels */
+                                     dstWidth, dstHeight, dstDepth,
+                                     dstData,
+                                     dstStride); /* stride in texels */
+      }
 
       pipe_transfer_unmap(pipe, srcTrans);
       pipe_transfer_unmap(pipe, dstTrans);
@@ -174,7 +250,7 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
  * Compute the expected number of mipmap levels in the texture given
  * the width/height/depth of the base image and the GL_TEXTURE_BASE_LEVEL/
  * GL_TEXTURE_MAX_LEVEL settings.  This will tell us how many mipmap
- * level should be generated.
+ * levels should be generated.
  */
 static GLuint
 compute_num_levels(GLcontext *ctx,
@@ -207,11 +283,14 @@ compute_num_levels(GLcontext *ctx,
 }
 
 
+/**
+ * Called via ctx->Driver.GenerateMipmap().
+ */
 void
 st_generate_mipmap(GLcontext *ctx, GLenum target,
                    struct gl_texture_object *texObj)
 {
-   struct st_context *st = ctx->st;
+   struct st_context *st = st_context(ctx);
    struct st_texture_object *stObj = st_texture_object(texObj);
    struct pipe_resource *pt = st_get_texobj_resource(texObj);
    const uint baseLevel = texObj->BaseLevel;
@@ -263,10 +342,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);
    }
 
@@ -298,7 +377,9 @@ st_generate_mipmap(GLcontext *ctx, GLenum target,
 
       dstImage->TexFormat = srcImage->TexFormat;
 
-      stImage = (struct st_texture_image *) dstImage;
+      stImage = st_texture_image(dstImage);
+      stImage->level = dstLevel;
+
       pipe_resource_reference(&stImage->pt, pt);
    }
 }
diff --git a/src/mesa/state_tracker/st_gl_api.h b/src/mesa/state_tracker/st_gl_api.h
new file mode 100644 (file)
index 0000000..52c3fa0
--- /dev/null
@@ -0,0 +1,9 @@
+
+#ifndef ST_GL_API_H
+#define ST_GL_API_H
+
+#include "state_tracker/st_api.h"
+
+struct st_api * st_gl_api_create(void);
+
+#endif
index 5cf17fe530a02fbb366a453c7e9c12f4a7614f90..44d59d447635d56109bd629f3b9398353fafb915 100644 (file)
@@ -26,7 +26,7 @@
  *    Chia-I Wu <olv@lunarg.com>
  */
 
-#include "state_tracker/st_api.h"
+#include "state_tracker/st_gl_api.h"
 
 #include "pipe/p_context.h"
 #include "pipe/p_screen.h"
@@ -692,7 +692,6 @@ st_api_get_proc_address(struct st_api *stapi, const char *procname)
 static void
 st_api_destroy(struct st_api *stapi)
 {
-   FREE(stapi);
 }
 
 /**
@@ -791,24 +790,22 @@ st_manager_add_color_renderbuffer(struct st_context *st, GLframebuffer *fb,
    return TRUE;
 }
 
+struct st_api st_gl_api = {
+   st_api_destroy,
+   st_api_get_proc_address,
+   st_api_is_visual_supported,
+   st_api_create_context,
+   st_api_make_current,
+   st_api_get_current,
+};
+
 /**
- * Create an st_api to manage the state tracker.
+ * Return the st_api for this state tracker. This might either be GL, GLES1,
+ * GLES2 that mostly depends on the build and link options. But these
+ * functions remain the same either way.
  */
 struct st_api *
-st_manager_create_api(void)
+st_gl_api_create(void)
 {
-   struct st_api *stapi;
-
-   stapi = CALLOC_STRUCT(st_api);
-   if (stapi) {
-      stapi->destroy = st_api_destroy;
-      stapi->get_proc_address = st_api_get_proc_address;
-      stapi->is_visual_supported = st_api_is_visual_supported;
-
-      stapi->create_context = st_api_create_context;
-      stapi->make_current = st_api_make_current;
-      stapi->get_current = st_api_get_current;
-   }
-
-   return stapi;
+   return &st_gl_api;
 }
index 6e8c446f783af40de98cd3050e4d159dda9fa170..772a2ee17c9d800d4562033574053b02c0293920 100644 (file)
@@ -217,6 +217,12 @@ st_translate_vertex_program(struct st_context *st,
       num_outputs++;
    }
 
+   if (ST_DEBUG & DEBUG_MESA) {
+      _mesa_print_program(&stvp->Base.Base);
+      _mesa_print_program_parameters(st->ctx, &stvp->Base.Base);
+      debug_printf("\n");
+   }
+
    error = 
       st_translate_mesa_program(st->ctx,
                                 TGSI_PROCESSOR_VERTEX,
@@ -246,11 +252,6 @@ st_translate_vertex_program(struct st_context *st,
 
    vpv->driver_shader = pipe->create_vs_state(pipe, &vpv->tgsi);
 
-   if ((ST_DEBUG & DEBUG_TGSI) && (ST_DEBUG & DEBUG_MESA)) {
-      _mesa_print_program(&stvp->Base.Base);
-      debug_printf("\n");
-   }
-
    if (ST_DEBUG & DEBUG_TGSI) {
       tgsi_dump( vpv->tgsi.tokens, 0 );
       debug_printf("\n");
@@ -423,6 +424,11 @@ st_translate_fragment_program(struct st_context *st,
    if (ureg == NULL)
       return;
 
+   if (ST_DEBUG & DEBUG_MESA) {
+      _mesa_print_program(&stfp->Base.Base);
+      _mesa_print_program_parameters(st->ctx, &stfp->Base.Base);
+      debug_printf("\n");
+   }
 
    error = 
       st_translate_mesa_program(st->ctx,
@@ -445,11 +451,6 @@ st_translate_fragment_program(struct st_context *st,
    ureg_destroy( ureg );
    stfp->driver_shader = pipe->create_fs_state(pipe, &stfp->tgsi);
 
-   if ((ST_DEBUG & DEBUG_TGSI) && (ST_DEBUG & DEBUG_MESA)) {
-      _mesa_print_program(&stfp->Base.Base);
-      debug_printf("\n");
-   }
-
    if (ST_DEBUG & DEBUG_TGSI) {
       tgsi_dump( stfp->tgsi.tokens, 0/*TGSI_DUMP_VERBOSE*/ );
       debug_printf("\n");
index 70ba239d07b02cfd24cfc94eb7a381f22a06e179..722f60e425244a03183c9994068c81b97aa6c23c 100644 (file)
@@ -142,42 +142,6 @@ st_texture_match_image(const struct pipe_resource *pt,
 }
 
 
-#if 000
-/* Although we use the image_offset[] array to store relative offsets
- * to cube faces, Mesa doesn't know anything about this and expects
- * each cube face to be treated as a separate image.
- *
- * These functions present that view to mesa:
- */
-const GLuint *
-st_texture_depth_offsets(struct pipe_resource *pt, GLuint level)
-{
-   static const GLuint zero = 0;
-
-   if (pt->target != PIPE_TEXTURE_3D || pt->level[level].nr_images == 1)
-      return &zero;
-   else
-      return pt->level[level].image_offset;
-}
-
-
-/**
- * Return the offset to the given mipmap texture image within the
- * texture memory buffer, in bytes.
- */
-GLuint
-st_texture_image_offset(const struct pipe_resource * pt,
-                        GLuint face, GLuint level)
-{
-   if (pt->target == PIPE_TEXTURE_CUBE)
-      return (pt->level[level].level_offset +
-              pt->level[level].image_offset[face] * pt->cpp);
-   else
-      return pt->level[level].level_offset;
-}
-#endif
-
-
 /**
  * Map a teximage in a mipmap texture.
  * \param row_stride  returns row stride in bytes
@@ -305,6 +269,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;
 
index 416468478b11a46d9ea4970a6b5be3172d550c34..447f091db1fde51a21d229fd0d41892732a91193 100644 (file)
@@ -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.
     */
@@ -185,18 +191,6 @@ extern const GLuint *
 st_texture_depth_offsets(struct pipe_resource *pt, GLuint level);
 
 
-/* Return the linear offset of an image relative to the start of its region.
- */
-extern GLuint
-st_texture_image_offset(const struct pipe_resource *pt,
-                        GLuint face, GLuint level);
-
-extern GLuint
-st_texture_texel_offset(const struct pipe_resource * pt,
-                        GLuint face, GLuint level,
-                        GLuint col, GLuint row, GLuint img);
-
-
 /* Upload an image into a texture
  */
 extern void
index 805969127db5f4ed2663b5122099da017f1704b2..e52a6118c31bdd3624cd90314ce4863541fa6b18 100644 (file)
@@ -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 */